Ping服务的php实现方法,让网站快速被收录
程序员文章站
2022-06-02 09:22:52
这篇文章继续说说这个ping服务的问题,首先归纳和总结以下资料: 【1】手动ping服务地址: baidu(百度)地址: http://ping.baidu.com/pin...
这篇文章继续说说这个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.jb51.net</value>
</param>
<param>
<value>http://s.jb51.net/archives/47.html</value>
</param>
<param>
<value>http://s.jb51.net/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.jb51.net/</string></value>
</param>
<param>
<value><string>http://s.jb51.net/archives/47.html</string></value>
</param>
<param>
<value><string>http://s.jb51.net/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.jb51.net</string></value></param>
<param><value><string>http://s.jb51.net/archives/47.html</string></value></param>
<param><value><string>http://s.jb51.net/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>//www.jb51.net</string></value></param>
<param><value><string>//www.jb51.net/a/15222.html</string></value></param>
<param><value><string>//www.jb51.net</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是啥?不知道……
【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.jb51.net</value>
</param>
<param>
<value>http://s.jb51.net/archives/47.html</value>
</param>
<param>
<value>http://s.jb51.net/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.jb51.net/</string></value>
</param>
<param>
<value><string>http://s.jb51.net/archives/47.html</string></value>
</param>
<param>
<value><string>http://s.jb51.net/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.jb51.net</string></value></param>
<param><value><string>http://s.jb51.net/archives/47.html</string></value></param>
<param><value><string>http://s.jb51.net/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>//www.jb51.net</string></value></param>
<param><value><string>//www.jb51.net/a/15222.html</string></value></param>
<param><value><string>//www.jb51.net</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是啥?不知道……
上一篇: 最简单去除平板电脑右下角的广告的方法