php 百度ping,百度ping接口 百度ping方法

跳至class ping{

private $title; //博客名称

private $hosturl; //博客首页地址

private $arturl; //新发文章地址

private $rssurl; //博客rss地址

private $baiduXML; //百度XML结构

private $baiduRPC; //百度XML地址

public function __construct($title,$arturl,$hosturl,$rssurl)

{

if(empty($title) || empty($arturl))

return false;

$this->title=$title;

$this->hosturl=$hosturl;

$this->rssurl=$rssurl;

$this->arturl=$arturl;

$this->baiduRPC='http://ping.baidu.com/ping/RPC2';

$this->baiduXML = '';

$this->baiduXML .='';

$this->baiduXML .='weblogUpdates.extendedPing';

$this->baiduXML .='';

$this->baiduXML .=''.$this->hosturl.'';

$this->baiduXML .=''.$this->title.'';

$this->baiduXML .=''.$this->arturl.'';

$this->baiduXML .=''.$this->rssurl.'';

$this->baiduXML .='';

$this->baiduXML .='';

}

public function pingbaidu()

{

$ch = curl_init();

$headers=array(

'User-Agent: request',

'Host: ping.baidu.com',

'Content-Type: text/xml',

);

curl_setopt($ch, CURLOPT_URL, $this->baiduRPC);

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_POSTFIELDS, $this->baiduXML);

$res = curl_exec ($ch);

curl_close ($ch);

//return $res;

return (strpos($res,"0"))?true:false;

}

}

function get_domain()

{

/* 协议 */

$protocol = 'http://';

/* 域名或IP地址 */

if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {

$host = $_SERVER['HTTP_X_FORWARDED_HOST'];

} elseif (isset($_SERVER['HTTP_HOST'])) {

$host = $_SERVER['HTTP_HOST'];

} else {

/* 端口 */

if (isset($_SERVER['SERVER_PORT'])) {

$port = ':' . $_SERVER['SERVER_PORT'];

if ((':80' == $port & 'http://' == $protocol) || (':443' == $port & 'https://' == $protocol)) {

$port = '';

}

} else {

$port = '';

}

if (isset($_SERVER['SERVER_NAME'])) {

$host = $_SERVER['SERVER_NAME'] . $port;

} elseif (isset($_SERVER['SERVER_ADDR'])) {

$host = $_SERVER['SERVER_ADDR'] . $port;

}

}

return $protocol.$host;

}

//$arc = new Ping('网站标题','更新的URL地址','网站域名','rss地址');

//$arc = new Ping('你网站的title',get_arcurl($id),get_domain(),'http://www.abc.com/rss.php');

//echo $arc->pingbaidu();

//返回结果为0 表示成功。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!您的问题是如何使用 PHP Socket 实现 ping 功能。实现 ping 功能可以通过发送 ICMP 报文来模拟网络 ping 操作。但是,由于 ICMP 协议是一个底层协议,PHP Socket 并不直接支持 ICMP,因此您需要使用原始套接字来发送 ICMP 报文。 以下是一个基本的 PHP Socket 实现 ping 功能的示例: ```php <?php $host = 'example.com'; $port = 80; // ping 80端口 $socket = socket_create(AF_INET, SOCK_RAW, 1); // 创建原始套接字 if ($socket === false) { echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; exit; } socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 1, 'usec' => 0)); // 设置超时时间为1秒 $startTime = microtime(true); $packet = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost"; // 构造 ICMP 报文 $socket_sendto($socket, $packet, strlen($packet), 0, $host, 0); // 发送 ICMP 报文 if (socket_read($socket, 255)) { // 接收 ICMP 响应报文 $endTime = microtime(true); $timeElapsed = ($endTime - $startTime) * 1000; echo "Ping took $timeElapsed ms"; } else { echo "Ping timed out"; } socket_close($socket); // 关闭套接字 ``` 需要注意的是,由于 ICMP 协议需要特殊的权限才能发送和接收 ICMP 报文,因此您需要以 root 用户或管理员身份运行该脚本。同时,该示例中使用了 80 端口来 ping 目标主机,但实际上 ping 操作并不需要使用端口,这只是为了方便演示而添加的。 希望这个示例对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值