Drupal이 제공하는 웹사이트가 여러 개 있습니다. 모든 웹사이트에는곱셈 모듈서버에 ping을 보냅니다.
명령줄을 통해 ping을 보내는 방법이 있습니까?
핑 전용 서버를 설정할 수 있었으면 좋겠습니다.
답변1
Caleb이 지적했듯이 cURL은 명령줄 HTTP를 위해 선택되는 무기인 경우가 많습니다. Caleb이 다시 지적한 것처럼 까다로운 부분은 요청을 하나로 모으는 것입니다. 특히 서버가 올바른 형식의 입력을 찾을 수 있는 XML-RPC의 경우 더욱 그렇습니다.
하지만 만약 당신이Multipin의 소스 코드 살펴보기, 당신은 이것이 단순한 HTTP 요청이 아니라는 것을 알게 될 것입니다(그것으로 대체된다고 생각하십시오). 이는 대상 서비스에 의해 활성화된 서비스에 따라 변경됩니다. 그리고 weblogUpdates의 경우 전송되는 내용의 특별한 경우입니다.
// Ping! Check service method
if (!empty($pingservice->method)) {
if ($pingservice->method == 'weblogUpdates.ping') {
$result = xmlrpc($pingservice->url, $pingservice->method, $name, $base_url);
}
else {
$result = xmlrpc($pingservice->url, $pingservice->method, $name, $base_url, $rss_url);
}
}
else {
$pingurl = strtr($pingservice->url, array(
'%name' => urlencode($name),
'%url' => urlencode($base_url .'/'),
'%rss' => urlencode($rss_url),
));
$result = drupal_http_request($pingurl);
분류법 등에 따라 어떤 RSS URL을 보낼지 결정하는 위의 줄은 현명합니다.
그래서 저는 두 가지 접근 방식 중 하나를 추천합니다.
무언가를 계속하려면
drupal_http_request
다음과 같이 보내서 시뮬레이션하십시오.$ curl <target-pingservice-url> -d 'name=<your site name>' -d url=<your-url> -d rss=/rss.xml
대안: MultiPing의 모든 동작을 원하는 경우 함수를 추출하여
_multiping_doping
PHP를 통해 명령줄에서 직접 실행할 수 있습니다.필요한 주요 기능은 Drupal의 xmlrpc입니다. http://api.drupal.org/api/drupal/includes%21common.inc/function/xmlrpc/7
행운을 빌어요!