• 089月

    少し前に、ブログのサイドメニューに、RSS更新情報や、はてなアンテナを
    表示するようにしたのですが、どうも今晩は「はてなアンテナ」の調子が
    おかしいようで、うちのブログの表示自体も遅くなってしまっていました。

    そこで、一旦、再度メニューの表示をオフにして、タイムアウトの処理を
    組み込むことに。

    ただ、RSSの処理部分は既存の関数を利用していますので、事前にファイル
    チェックをおこなう処理を別個に入れることにしました。

    $server = “a.hatena.ne.jp”;
    define(“TIMEOUT_SECOND”, 1);
    $fp = @fsockopen($server, 80, $errno, $errstr, TIMEOUT_SECOND);
    if ( !$fp ) {
      //タイムアウトエラー
      $rss = “”;
      return $rss;
    }
    else {
      fwrite($fp, “GET http://”.$server.”/macbs/rss HTTP/1.0\r\n\r\n”);
      stream_set_blocking( $fp, TRUE );
      stream_set_timeout($fp, TIMEOUT_SECOND);
      $info = stream_get_meta_data($fp);

      $txt .= fgets($fp, 2000);
      $info = stream_get_meta_data($fp);
      fclose($fp);

      if ( $info[‘timed_out’] ) {
        //タイムアウトエラー
        $rss = “”;
        return $rss;
      }
    }

    まぁ、内容は見ての通り(^^;ということで、とりあえずオープンしてみて、
    ちらっと読んでタイムアウトだったら、処理をやめるという具合です。

    PHPのバージョンが新しければ、fopenで処理できるのですが、fsockopenを
    使ったので、ちょっとややこしくなりました。

    はてなアンテナが復旧してくれるのが一番ですが、こういうことは
    他のRSSでもありうる問題ですし、この機会に対処できて良かったです。

    PHP 逆引きレシピ (PROGRAMMER’S RECiPE) PHP 逆引きレシピ (PROGRAMMER’S RECiPE)

    by G-Tools

    (当サイトでは、Amazonアソシエイトをはじめとした第三者配信のアフィリエイトプログラムにより商品をご紹介致しております。)

    Filed under: Blog
    2009/09/08 10:59 pm | PHPでタイムアウト処理 はコメントを受け付けていません

Comments are closed.