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 相关文章推荐
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
PHP strtotime函数详解
Dec 18 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
Aug 01 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
python批量下载图片的三种方法
2013/04/22 Python
Python中的CURL PycURL使用例子
2014/06/01 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
使用python生成目录树
2018/03/29 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
少年闰土教学反思
2014/02/22 职场文书
医疗纠纷协议书
2014/04/16 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
家庭贫困证明
2014/09/23 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS