Como Caleb observa, cURL é geralmente a arma de escolha para linha de comando HTTP A parte complicada - como Caleb nota novamente - é colocar o pedido juntos, especialmente para XML-RPC, onde o servidor provavelmente está procurando para uma entrada bem formada.
Mas se você pesquisar na fonte do Multipin , veja que é não apenas uma simples requisição HTTP (achei que se trata disso) e muda com base em quais serviços o serviço de destino ativou - e, no caso de weblogUpdates - casos especiais, o que é enviado:
// 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);
E algumas linhas acima, é inteligente sobre como decidir qual rss URL para enviar, com base na taxonomia, etc.
Então eu sugiro uma das duas abordagens.
-
Se você quiser apenas fazer alguma coisa, simule o
drupal_http_request
enviando algo assim:$ curl <target-pingservice-url> -d 'name=<your site name>' -d url=<your-url> -d rss=/rss.xml
-
Alternativamente: se quiser todo o comportamento do MultiPing, você pode extraia essa função
_multiping_doping
e execute-a a partir do linha de comando diretamente pelo PHP.A função workhorse que você precisará é o xmlrpc do Drupal: link
Boa sorte!