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数据库类
May 27 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
MongoDB在PHP中的常用操作小结
Feb 20 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
php自定义hash函数实例
May 05 PHP
php实现分页显示
Nov 03 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
php出租房数据管理及搜索页面
May 23 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
php校验公钥是否可用的实例方法
Sep 17 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
php将数据库导出成excel的方法
2010/05/07 PHP
php Session存储到Redis的方法
2013/11/04 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python下载库的步骤方法
2019/10/12 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Python bisect模块原理及常见实例
2020/06/17 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
大一自我鉴定范文
2013/12/27 职场文书
周鸿祎:教你写创业计划书
2013/12/30 职场文书
大学军训感言800字
2014/02/27 职场文书
董事长助理工作职责
2014/06/08 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书