发送 ping 的命令行方式

发送 ping 的命令行方式

我有很多由 Drupal 提供支持的网站。每个网站都有乘法模块来 ping ping 服务器。

有什么方法可以通过命令行发送 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 是很聪明的。

所以我建议采用两种方法之一。

  1. 如果您只是想让某些事情继续进行,请drupal_http_request 通过发送如下内容来模拟:

    $ curl <target-pingservice-url> -d 'name=<your site name>' -d url=<your-url> -d rss=/rss.xml
    
  2. 或者:如果想要 MultiPing 的所有行为,您可以提取该_multiping_doping函数并直接通过 PHP 从命令行运行它。

    您需要的主力函数是 Drupal 的 xmlrpc: http://api.drupal.org/api/drupal/includes%21common.inc/function/xmlrpc/7

祝你好运!

相关内容