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 相关文章推荐
福利彩票幸运号码自动生成器
Oct 09 PHP
基于mysql的bbs设计(三)
Oct 09 PHP
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
php目录管理函数小结
Sep 10 PHP
处理单名多值表单的详解
Jun 08 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
destoon官方标签大全
Jun 20 PHP
windows7下安装php的php-ssh2扩展教程
Jul 04 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
PHP缓冲区用法总结
Feb 14 PHP
详解json在php中的应用
Sep 30 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中上传大体积文件时需要的设置
2006/10/09 PHP
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
php中require和require_once的区别说明
2014/02/27 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
js面向对象编程总结
2017/02/16 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
Python绘制组合图的示例
2020/09/18 Python
Python创建自己的加密货币的示例
2021/03/01 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
授权收款委托书
2014/09/23 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
2014财务年度工作总结
2014/11/11 职场文书