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;
}
?>