Ping服务的php实现方法,让网站快速被收录


Posted in PHP onFebruary 04, 2012

这篇文章继续说说这个ping服务的问题,首先归纳和总结以下资料:
【1】手动Ping服务地址:
Baidu(百度)地址: http://ping.baidu.com/ping.html
Google(谷歌)地址:http://blogsearch.google.com/ping
Feedsky(飞递)地址:http://ping.feedsky.com/ping.html
Qihoo(奇虎)地址:http://so.blog.qihoo.com/pingblog.html
IASK(爱问)地址:http://blog.iask.com/ping.php
【2】自动Ping 服务应用编程接口(API):
Google(谷歌):http://blogsearch.google.com/ping/RPC2
Feedburner:http://ping.feedburner.com
Feedsky(飞递):http://www.feedsky.com/api/RPC2
Feedster:http://api.feedster.com/ping.php
IASK(爱问):http://blog.iask.com/RPC2
Qihoo(奇虎):http://ping.blog.qikoo.com/rpc2.php
鲜果:http://www.xianguo.com/xmlrpc/ping.php
抓虾:http://www.zhuaxia.com/rpc/server.php
Blogdigger:http://www.blogdigger.com/RPC2
blo.gs:http://ping.blo.gs/
ICEROCKEThttp://rpc.icerocket.com:10080/
Moreover:http://api.moreover.com/RPC2
Newsgator:http://rpc.newsgator.com/
Syndic8:http://www.syndic8.com/xmlrpc.php
Weblogs:http://rpc.weblogs.com/RPC2
Weblogalot:http://ping.weblogalot.com/rpc.php
上面提供的,包括前文说的ping服务,有些我试了好用 有些不好用,要用那些那个看情况而定。这个自己根据网络环境等自行测试下,适合的就是最好的,没有推荐。
好吧,说了那么多上面的,下面的是重点,也就是如何实现ping服务,wordpress是可以通过后台实现的,其他的那?比如没有ping服务功能的博客程序什么的怎么办?据纷纭所知道的,博客系统中好用的WORDPRESS自带PING功能,毋庸置疑,ASP类的Z-BLOG貌似可以通过插件实现这个功能。其他的博客系统?其他的?没有其他,我的选择唯有wordpress,没有其他,只要唯一。呵呵,不开玩笑了。下面说下php来实现ping的服务的问题,这个针对其他不支持ping功能的网站或者系统之类的,大家可以自行开发个接口实现。比如DEDECMS的二次开发就可以,纷纭最近在研究这个项目。
需要说的是百度的ping和谷歌的提交格式是不同的,下面简单的说说,分别给百度和谷歌做个介绍,首先介绍的是谷歌(为啥不是百度,OK?别那么纠结,会有的……):
【*1】谷歌的ping服务的php的实现
关于RPC的详细介绍可以移步维基百科,谷歌ping服务的标准:
RPC端点: http://blogsearch.google.com/ping/RPC2
调用方法名: weblogUpdates.extendedPing
参数: (应按照如下所列的相同顺序传送)
站点名
站点URL
需要检查更新的页面URL
相应的RSS、RDF或Atom种子的URL
可选:页面内容的分类名称(或标签)。您可以指定多个值,之间用'|'字符进行分隔。
首先要写一个CURL的函数,来POST谷歌的RPC端点:

function postUrl($url, $postvar) { 
$ch = curl_init(); 
$headers = array( 
"POST ".$url." HTTP/1.0″, 
"Content-type: text/xml;charset=\"utf-8\"", 
"Accept: text/xml", 
"Content-length: ".strlen($postvar) 
); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar); 
$res = curl_exec ($ch); 
curl_close ($ch); 
return $res; 
}

主要的curl写好了之后,剩下就是要根据谷歌的XML-RPC标准组装发送的数据了,详细的请求例子可以参考官方案例,点这里。
例如我的代码是这样写的:
$googleXML = <<<END 
<?xml version="1.0″?> 
<methodCall> 
<methodName>weblogUpdates.extendedPing</methodName> 
<params> 
<param> 
<value>Ping服务的php实现方法,让网站快速被收录</value> 
</param> 
<param> 
<value>http://s.3water.com</value> 
</param> 
<param> 
<value>http://s.3water.com/archives/47.html</value> 
</param> 
<param> 
<value>http://s.3water.com/feed</value> 
</param> 
</params> 
</methodCall> 
END; 
$res = postUrl(‘http://blogsearch.google.com/ping/RPC2′, $googleXML); 
//下面是返回成功与否的判断(根据谷歌ping的接口说明) 
if (strpos($res, "<boolean>0</boolean>")) 
echo "PING成功"; 
else 
echo "PING失败";

OK,这个就可以简单的实现谷歌的PING服务了。可以根据代码自行修改实现这个功能。
【*2】百度的ping服务的php的实现(这个标题真DT)
百度的ping服务xml代码是跟谷歌不同的,百度总是会有自己的特点:
介绍下百度博客ping服务,百度博客Ping服务的详细介绍,请移步:http://www.baidu.com/search/blogsearch_help.html#n7。
百度的ping服务也是基于XML-RPC标准协议,但是与谷歌ping服务不同的是百度的ping发送的xml格式不同,我们需要使用string节点包裹内容。
例如:
<?xml version="1.0″ encoding="UTF-8″?> 
<methodCall> 
<methodName>weblogUpdates.extendedPing</methodName> 
<params> 
<param> 
<value><string>Ping服务的php实现方法,让网站快速被收录</string></value> 
</param> 
<param> 
<value><string>http://s.3water.com/</string></value> 
</param> 
<param> 
<value><string>http://s.3water.com/archives/47.html</string></value> 
</param> 
<param> 
<value><string>http://s.3water.com/feed</string></value> 
</param> 
</params> 
</methodCall>

根据上面提到的谷歌接口,我们只要改变一下提交的xml内容即可,当然百度ping服务返回的判断也是跟谷歌的不同,也可以做相应的修改,
下面是php的代码:
$baiduXML = <<<EOT 
<?xml version="1.0″ encoding="UTF-8″?> 
<methodCall> 
<methodName>weblogUpdates.extendedPing</methodName> 
<params> 
<param><value><string>Ping服务的php实现方法,让网站快速被收录</string></value></param> 
<param><value><string>http://s.3water.com</string></value></param> 
<param><value><string>http://s.3water.com/archives/47.html</string></value></param> 
<param><value><string>http://s.3water.com/feed</string></value></param> 
</params> 
</methodCall> 
EOT; 
$res = postUrl(‘http://ping.baidu.com/ping/RPC2′, $baiduXML); 
//下面是返回成功与否的判断(根据百度ping的接口说明) 
if (strpos($res, "<int>0</int>")) 
echo "PING成功"; 
else 
echo "PING失败";

上面的代码就可以实现php的ping服务了。好吧,下面再给各位看管提供一个百度的ping服务代码,没办法谁让他那么独特那?
<?php 
function postUrl($url, $postvar) 
{ 
$ch = curl_init(); 
$headers = array( 
"POST ".$url." HTTP/1.0″, 
"Content-type: text/xml; charset=\"gb2312\"", 
"Accept: text/xml", 
"Content-length: ".strlen($postvar) 
); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar); 
$res = curl_exec ($ch); 
curl_close ($ch); 
return $res; 
} 
$baiduXML = "<?xml version=\"1.0\" encoding=\"gb2312\"?> 
<methodCall> 
<methodName>weblogUpdates.extendedPing</methodName> 
<params> 
<param><value><string>三水点靠木</string></value></param> 
<param><value><string>https://3water.com</string></value></param> 
<param><value><string>https://3water.com/a/15222.html</string></value></param> 
<param><value><string>https://3water.com</string></value></param> 
</params> 
</methodCall>"; 
$res = postUrl(‘http://ping.baidu.com/ping/RPC2′, $baiduXML); 
if ( strpos($res, "<int>0</int>") ) 
{ 
echo "PING成功"; 
} 
else 
{ 
echo "PING失败"; 
} 
?>

此文很DT的让我浪费了N个草稿才写完,然后纷纭就发现需要搞个CODE的插件给WP装备上了。代码的问题真的很纠结,还有就是国人的WP主题没有支持分页的,这个让我很DT,说了半天,DT是啥?不知道……
PHP 相关文章推荐
PHP静态新闻列表自动生成代码
Jun 14 PHP
php实现文件下载实例分享
Jun 02 PHP
linux下编译安装memcached服务
Aug 03 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
PHP批量生成图片缩略图的方法
Jun 18 PHP
为你总结一些php系统类函数
Oct 21 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
php依赖注入知识点详解
Sep 23 PHP
PHP常用技巧总结(附函数代码)
Feb 04 #PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 #PHP
php中global和$GLOBALS[]的分析之一
Feb 02 #PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 #PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 #PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 #PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 #PHP
You might like
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
PHP编写简单的App接口
2016/08/28 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
Python脚本实现代码行数统计代码分享
2015/03/10 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
python中的二维列表实例详解
2018/06/19 Python
python 字典的打印实现
2019/09/26 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
python实现用户名密码校验
2020/03/18 Python
Django中ORM的基本使用教程
2020/12/22 Python
python 如何在测试中使用 Mock
2021/03/01 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
Java程序员面试题
2016/09/27 面试题
会计专业求职信
2014/08/10 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
同志主要表现材料
2014/08/21 职场文书
校长一岗双责责任书
2015/05/09 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
清明扫墓感想
2015/08/11 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python