phpのタイムアウト処理について質問させてください。 ワードプレスで作成した「サイトA」のRSSフィードを使用して
phpのタイムアウト処理について質問させてください。 ワードプレスで作成した「サイトA」のRSSフィードを使用して 「サイトB」にサイトAの更新情報をコンテンツの一部として表示させているのですが、 ワードプレス側でメンテナンスなどが発生すると、サイトBの方で処理待ちリクエストが増え、サイトBまで落ちてしまいます。 この問題を解消するためには、サイトAの更新情報をiframeで読み込むという手段もあるのですが、これはあまり使いたくないので タイムアウト処理で一定時間が経ってもサイトAの更新情報を取得できない場合は、 その部分だけ「表示できません」とするなど、処理を分けたいと考えています。 ちなみに、サイトAの更新情報取得には「rss-php」というライブラリを使用しています。 https://kana-lier.com/web/php_rssfeed/ これをカスタマイズしてタイムアウト処理を追加する方法を探しています。 何卒よろしくお願い致します。
ベストアンサー
表示するタイミングで取得しないといけない理由がありますか? cronなどで定期的に取得して、あらかじめファイルにでも書き出しておくのはダメですか? >処理を分けたいと考えています。 Feed.php は取得できなかったら(タイムアウトになったら。というか 200 が返ってこなかったら)前回の cacheファイルのデータを返す仕様です。 Feed.php の 190行目がその処理ですから、この部分を書き替えないといけません。取得できなかったら(cacheの有無をチェックせずに)そのまま例外を生成するようにして、この例外を捕捉するようにしないといけません。 あと Feed.php のタイムアウトは 20sec になっていますから(218行目)、多少は短くしてもいいかもしれません。
1人がナイス!しています
質問者からのお礼コメント
ご回答ありがとうございました! Feed.phpの冒頭にこちらを追加したら何となくそれらしい挙動になりました。 ini_set('default_socket_timeout', 秒数); ご教授いただいたやり方も試してみたいと思います。
お礼日時:5/10 8:43