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 zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
php旋转图片90度的方法
Nov 07 PHP
解决CodeIgniter伪静态失效
Jun 09 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
PHP实现重载的常用方法实例详解
Oct 18 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP日期和时间函数的使用示例详解
Aug 06 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
yii操作cookie实例简介
2014/07/09 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
解密效果
2006/06/23 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
Python使用python-docx读写word文档
2019/08/26 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
人力资源部培训专员岗位职责
2014/01/02 职场文书
党员批评与自我批评
2014/02/12 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
车辆年审委托书范本
2014/09/18 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers