更新PINGのタイムアウト![](/searchicon.gif)
rNoteはオフで記事書いてFTPで上げるのが基本なので、
更新したときにブログ検索に情報を送る場合はサードパーティ製ツールを使う事になる。
http://www.nono150.com/
これを使えば、記事を書いて再構築して、そのまま管理画面から更新PINGを送れる。
だが、ずらっと並ぶ送信先の全てが軽いサーバーというわけでもないようで、
中には送信して反応があるまで数十秒とかかかる鯖もあるわけで、
それらの送信先全ての反応を丁寧に待っていたら、
XREAで設定された30秒の制限時間を超えちゃって、PHPの動作が強制終了される。
送信が途中で止められちゃうと言うことは、遅い鯖、落ちてる鯖が存在すると、
リストでそれより下にある送信先には、送信すらせずに終わることもあるわけだ。
で、初期リストに15個とかURL入れていると、全URLに送信できる事は滅多にない。
そこで、5個にわけて3回送信するとかするのだが、それでも止まるときは止まる。
ひょっとしたらXREA以外のサーバーではこの30秒時間切れってのがないのだろうか?
いや、普通はスクリプトが長時間動くことのないように対処してると思うのだが。
ともかく、上記のサイトで入手できるスクリプトを少し修正して、
一発でより多くのサイトに送信できるようにしてみようと言う話。
まずは、このタイムアウトを導入。
http://php.s3.to/man/function.socket-set-timeout.html
書いてあるとおり、fputsの次に挿入。
初期リスト15個で、制限時間30秒だから、割って2秒でOKか。
そして、もう一つ気になったのは、whileの中でfgetsしていることだ。
送信してどんな反応があったかに関わらず”送信完了”と表示しているので、
反応を全文取得する必要なんてないはずだ。
むしろ、反応を取得する必要すらないはずだ。
もしかしたら、fgetsを1回以上しないと正常な送信が出来ないとか、あるかも知れず、
あたしはPHPに関する知識が浅いので、必要な物と不要な物の区別はしがたいので、
whileをifに変更してみた。
必要かも知れない処理は省略させず、不要っぽい処理だけ省略したってわけ。
本当はこのスクリプト書いた人に聞けば良いんだろうけど、
コミュニケーションが苦手なので独自に出来る範囲にて対処してみた。