因为很多服务器没有开crul这个模块,所以想用非crul的方法来ping百度
于是用fsockopen去ping,不知道是不是格式问题,反馈基本都是400
网上找了很久,基本没有这方面的资料,全都是同一种方法。
下面是代码,请高人看下问题在哪里
<?php
$XML='<?xml version="1.0" encoding="gb2312"?><methodCall> <methodName>weblogUpdates.extendedPing</methodName>\r\n<params> <param><value><string>测试</string></value></param> <param><value><string>测试地址</string></value></param> <param><value><string>页面</string></value></param> </params></methodCall>';
$url='ping.baidu.com/ping/RPC2';
function ping($host, $port, $XML) {
$fp = fsockopen($host, $port, $errno, $errstr);
$header='POST /ping/RPC2 HTTP/1.1\r\n';
$header.='User-Agent: request\r\n';
$header.='Host: ping.baidu.com\r\n';
$header.='Content-Type: text/xml\r\n';
$header.= "Connection: close\r\n\r\n";
$header.= $XML."\r\n\r\n";
$contents = '';
fputs($fp, $header);
while ($fp && !feof($fp))
$contents .= fread($fp, 1024);
fclose($fp);
return $contents;
}
echo ping($url,80,$XML);
?>百度XMLping
于是用fsockopen去ping,不知道是不是格式问题,反馈基本都是400
网上找了很久,基本没有这方面的资料,全都是同一种方法。
下面是代码,请高人看下问题在哪里
<?php
$XML='<?xml version="1.0" encoding="gb2312"?><methodCall> <methodName>weblogUpdates.extendedPing</methodName>\r\n<params> <param><value><string>测试</string></value></param> <param><value><string>测试地址</string></value></param> <param><value><string>页面</string></value></param> </params></methodCall>';
$url='ping.baidu.com/ping/RPC2';
function ping($host, $port, $XML) {
$fp = fsockopen($host, $port, $errno, $errstr);
$header='POST /ping/RPC2 HTTP/1.1\r\n';
$header.='User-Agent: request\r\n';
$header.='Host: ping.baidu.com\r\n';
$header.='Content-Type: text/xml\r\n';
$header.= "Connection: close\r\n\r\n";
$header.= $XML."\r\n\r\n";
$contents = '';
fputs($fp, $header);
while ($fp && !feof($fp))
$contents .= fread($fp, 1024);
fclose($fp);
return $contents;
}
echo ping($url,80,$XML);
?>百度XMLping
- <methodResponse>
- <params>
- <param>
- <value>
<int>1</int>
</value>
</param>
</params>
</methodResponse>
echo ping($url, 80, $XML);function ping($url, $port, $XML) {
$url = parse_url($url); //分析 url
$fp = fsockopen($url['host'], $port, $errno, $errstr);
$header="POST /$url[path] HTTP/1.1\r\n";
$header.="Host: $url[host]\r\n";
$header.="User-Agent: request\r\n";
$header.="Content-Type: application/x-www-form-urlencoded\r\n"; //POST 方式要加这个头
$header .= "Content-length: " . strlen($XML) . "\r\n";//给出数据的长度
$header.= "Connection: close\r\n\r\n";
$header.= $XML."\r\n\r\n";
$contents = '';
fputs($fp, $header);
while ($fp && !feof($fp)) $contents .= fread($fp, 1024);
fclose($fp);
$ar = explode("\r\n\r\n", $contents); //分离报头和数据
return $ar[1];
}