Ping Service,博客程序提供一种通知机制,以便在第一时间将博客的更新信息发布到提供Ping Service服务的网站,写聚合的时候研究了一下
先看 标准 吧
这是一个标准的Ping Service,用XMLRPC来传数据的,注释写的这么详细,代码说明就不需要了吧,PHP5开启XMLRPC方法
client.php
<?php $host = ''zxsv''; $port = 80; $rpc_server = ''/test/xmlrpc_server.php''; $title = ''zxsv''; $server = ''http://zxsv/test/''; $rss = ''http://zxsv/test/rss.php''; //weblogUpdates.Ping方法 $Ping = xmlrpc_encode_request(''weblogUpdates.Ping'', array($title, $server )); //weblogUpdates.extendedPing方法 $extendedPing = xmlrpc_encode_request(''weblogUpdates.extendedPing'', array($title, $server, $rss )); //调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息 $response = rpc_client_call($host, $port, $rpc_server, $Ping); $split = ''<?xml version="1.0" encoding="iso-8859-1"?>''; $xml = explode($split, $response); $xml = $split . array_pop($xml); $response = xmlrpc_decode($xml); //输出从RPC服务器端获取的信息 print_r($response); /** * 函数:提供给客户端进行连接XML-RPC服务器端的函数 * 参数: * $host 需要连接的主机 * $port 连接主机的端口 * $rpc_server XML-RPC服务器端文件 * $request 封装的XML请求信息 * 返回:连接成功成功返回由服务器端返回的XML信息,失败返回false */ function rpc_client_call($host, $port, $rpc_server, $request) { $fp = fsockopen($host, $port); $query = "POST $rpc_server HTTP/1.0\nUser_Agent: XML-RPC Client\nHost: ".$host."\nContent-Type: text/xml\nContent-Length: ".strlen($request)."\n\n".$request."\n"; if (!fputs($fp, $query, strlen($query))) { $errstr = "Write error"; return false; } $contents = ''''; while (!feof($fp)){ $contents .= fgets($fp); } fclose($fp); return $contents; } ?>
server.ph |