PHPを使ってサイトの更新情報などをPINGサーバーに送信する方法とその関数化です。
PINGの仕組みは、サイトの情報を記載したXMLを対象のPINGサーバーにPOSTします。
するとサイトにPINGさんが情報を見にきてくれる。というわけです。
ブログサービスでは標準機能ですが、今回はPHPで実装してみようと思います。
SPONSORED LINK
PHPでPINGを送信する関数
独自関数で、送信先ドメイン・送信先パス・サイト名・サイトURLを指定するとXMLを生成してPINGサーバーにソケット経由で送信するPHPです。
function pushPing($host, $path, $title, $url) {
$content =
"<?xml version=\"1.0\"?>\n"
. "<methodCall>\n"
. "<methodName>weblogUpdates.ping</methodName>\n"
. "<params>\n"
. "<param>\n"
. "<value>" . htmlspecialchars($title) . "</value>\n"
. "</param>\n"
. "<param>\n"
. "<value>$url</value>\n"
. "</param>\n"
. "</params>\n"
. "</methodCall>\n";
$ch =
"POST $path HTTP/1.0\n"
. "Host: $host\n"
. "Content-Type: text/xml\n"
. "Content-Length: ". strlen($content) . "\n"
. "\n"
. $content;
$sopen = @fsockopen($host, 80, $errno, $errstr, 10);
if($sopen){
$res = "";
fputs($sopen, $ch);
while(!feof($sopen)){
$res .= fread($sopen, 1024);
}
}
return $res;
}
PING送信関数の実行方法
<?print pushPing("blogsearch.google.com", "/ping/RPC2", "デアイモビ", "https://deaimobi.com/");?>
printすることで、Ping送信を実行して返却されたステータスコードなどのXMLレスポンスを表示できます。
サイト側の準備
送信元となるサイトにはRSS配信をしている事を明示する必要があります。
<link rel="alternate" type="application/rss+xml" title="RSS" href="【RSSのURL】" />
ここで明示できていない場合には最悪の場合スパムとみなされるケースもありますので注意しましょう。
まとめ
最近ではPINGサーバー側でのチェックも厳しくなってきているようです。PINGスパム対策のせいでしょうか。
特に注意したいのは反映されていないからと思って同じPINGを何度も送ってしまう行為です。
送信したドメインがスパム判定を受けてしまうかもしれませんので気をつけましょう。
今日も知識欲は止まらない。