• 締切済み
  • すぐに回答を!

タイムアウトの場合のエラー回避

ブログのRSSを読み込んで最新5件を表示するPHPをサイトに組み込みました。 ファイルはincludeを使用して読み込んでいるのですが、ブログサイトがダウンした場合などに長時間画面が表示されない状態になってしまいます。 タイムアウト後はエラーメッセージが表示され、それ以降の画面が真っ白になってしまいます。 これを、ブログサイトのRSSが呼び出せない状態になったら「現在ブログサイトがダウンしています」というメッセージを出力して、エラーにしないという方法はありませんか? 画面の表示がおかしくなるのはとても困るので、なんとかしたいのです。 アドバイスお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数272
  • ありがとう数1

みんなの回答

  • 回答No.1

includeを使わないでfile_get_contents等を使って読み込み、その返り値を読んでエラー処理を行えばよいのではないでしょうか?関数の頭に@を付けると、読み込みエラーが出てもPHPのエラーメッセージは表示されません。

参考URL:
http://www.php.net/manual/ja/function.file-get-contents.php

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 これはファイルの内容を文字列に読み込む関数という事ですが、PHPのエラーも認識してくれるのでしょうか? includeを使っているのはRSSの読み込みではなくRSSの読み込み処理をしているPHPファイルなのです。 RSSファイルはfopenを使って開いています。 うまく説明できなくてすみません。

質問者からの補足

一度締め切らせていただき再度質問させていただきます。

関連するQ&A

  • システムエラーの回避法とタイムアウトを早める方法

    ブログのRSSを取得し最新5件の記事タイトルを取得するスクリプトを作りました。 スクリプト自体は問題なく動いているのですが、RSSを発行しているサイトがダウンした場合にちょっと困った事が… 問題1:タイムアウトが長すぎる スクリプトは2回読んでいて、RSSのサーバーがダウンしている場合、タイムアウトしないと画面が表示されません。 タイムアウトが返って来るまでの時間は約6分です。 試しにfsockopenというのを使用してタイムアウトを5秒に設定したところ、タイムアウトは2分まで短縮されました。 タイムアウトが上手く動かないのは一体何故でしょうか? 10秒くらいで接続できなかったらタイムアウトさせて画面を全て表示させたいのですが、どうすればよいのでしょうか。 問題2:エラーを回避させてもシステムエラーになる。 システムエラーがあった場合、システムエラーの画面に飛ぶようになっています。 上記のブログでタイムアウトした場合、システムエラーとなり通常のページが表示されません。 関数に@をつけるとエラーメッセージは表示されないと教えていただきましたが、メッセージが表示されないだけでエラーには変わりありませんでした。 システムエラーとして認識させないためにはどうすればよいでしょうか? 現在のソースはこんな感じです。 $fp = fsockopen("www.hoge.jp", 5); if(!$fp) {  return "タイムアウト\n"; } else {  //RSSの読み込み処理 } アドバイスお願いします。

    • ベストアンサー
    • PHP
  • 共通関数でセッションのタイムアウトを指定する方法

    phpを始めたばかりなので 根本的な考え方から間違ってるかもしれませんが、 その時はご指摘下さい。 やりたい事は、セッションのタイムアウトの指定です。 ログインしてから1時間後にタイムアウトを促すように 作りたいのですが、なかなか上手くいきません。 まず、ログイン画面のphpファイルが存在します。 ここでログインするとトップページの phpファイルへ飛びます。 トップページでは、 includeで前頁に共通する関数が詰まったphpファイルを取り込み、 それぞれのページで様々な処理を行います。 このincludeするphpファイルにセッションの タイムアウトを行う命令を入れようと思っています。 そうすれば、前頁でこのファイルをincludeするだけで 1時間後にセッションが切れる、という仕組みが できると考えているのですが、できないのであれば、 ご指摘下さい。 ちなみにその共通phpファイルに入れてみた命令は以下です。 session_cache_expire(分数) 又は… session_cache_limiter('private'); session_cache_expire (5); あまりコードの意味はわかっていませんが、 この方法で何故できないのでしょうか? 一応、このやり方でできなかったので 各ページ単体にも同じコードを入れてテストしましたが、 セッションが切れる事はありませんでした。 何かアドバイスをお願いします。

    • 締切済み
    • PHP
  • htmlからのphp結果表示

    お世話になります。 掲題の件での質問ですが、行き詰まったので教えてください。 現在、以下の処理をしていますが (1)phpにてrss結果を取得し、echoにて出力 (2)htmlにて、(1)の結果を<iframe>にて取得して表示 (2)にて、インラインフレームではなく、通常の文章ライクに表示したいのですが 受け取り方、表示の仕方がわかりません。。。 <?php include("xxx.php"); ?> としても何も表示されないので困っています。 よろしくお願いします。

  • HTMLファイルにPHPファイルを組み込むとエラー

    HTMLファイルの拡張子をPHPへ変更し(正常に見えることを確認した)そのPHPファイルへ別に作成したPHPファイルを追加ペーストしたのですが下記のエラーが出て困っています。別に作成したPHPファイルは、単独では正常に見えるので、何故エラーが出るのかご教示をお願いします。検索すると下記のエラーと同じ内容が表示されたHPばかりでどうやって修正したら良いかわかりません。私としては、もともと作成したHTMLファイルにPHPを組み込めると時間的に楽なのですができないようなので仕方なくPHPへ変更してそれにコンテンツを追加しようとしています。PHPは、今回初めてなのでほとんど素人です。 Warning: include(magpierss-0.72/rss_fetch.inc) [function.include]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\popup\popup2.php on line 156 Warning: include() [function.include]: Failed opening 'magpierss-0.72/rss_fetch.inc' for inclusion (include_path='.;c:/php/includes;C:/php/PEAR;c:/php/popup/includes') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\popup\popup2.php on line 156 Fatal error: Call to undefined function fetch_rss() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\popup\popup2.php on line 258 156行の文は include('magpierss-0.72/rss_fetch.inc'); です。 258行は function getRss($rssInfo) { $feed = fetch_rss($rssInfo['url']); ファイルが開けない?とうエラーは、単独では表示されなかった。何か使い方が悪いのかその辺も含めて教えていただけたらと思い投稿させていただきました。検索で調べましたが、同じエラー内容が表示されたHPがたくさんあり根本的な単純な間違いかもしれませんが宜しくお願いします。

    • 締切済み
    • PHP
  • ssiのinclude fileについて

    現在、サイト制作中なのですが、流行のRSSを取得し、トピックスを作成するという事を行っているのですが、どうもうまくいきません。 http://njoy.pekori.to/blog/index.php?eid=38 こちらを参考にし、表示させる所まではできました。 ただ、この方法ですと、各RSS配信サイト事にスクリプトを用意しなければなりません。 そこで、各ニュースサイト事にスクリプトを分け、説明にある通り、 <ul><!--#include file="rss.phpのアドレス" --></ul> で、新たなスクリプトのパスを書いてみましたが、何故か、そのPHPのソースが表示されてしまいます。 試しに、 <ul><!--#include file="1/rss.php" --></ul> <br> <ul><!--#include file="2/rss.php" --></ul> と並べてみ、確認するとやはり下のほうだけPHP自体のソースが表示されます そこで、上の方を削除してみると、下のほうは綺麗に表示されました 全く離れた所に、 <ul><!--#include file="3/rss.php" --></ul> を記載してみると、やはりこれもソースが表示されます。 同一ページでは、include fileが使えないのでしょうか? それとも、使うには何か方法がいるのでしょうか? 現在、.httaccessにて、 <Files index.html> Options +Includes AddHandler server-parsed html </Files> と、index.htmlでssiを実行できるようにしています。

    • ベストアンサー
    • CGI
  • PHP4でXML

    こんにちは。PHPでXMLファイルを書き換えたいのですが、サーバ環境がPHP5ではありません。以下のようにHTMLと同じ方法でphpファイルを読み込むことは不可能なのでしょうか?だとしたら他に良い方法はありますか?困っています。どなたか助けてください。よろしくお願いします。 <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>○○1</title> <link>http://○○</link> <description>ウェブサイトに掲載されている最新の情報を掲載しております。</description> <language>ja</language> <copyright>Copyright (c) 2007 ○○, Inc. All Rights Reserved.</copyright> <pubDate><?php include("../rss/date.php"); ?></pubDate> <item> <title>ニュースリリース</title> <link>http://○○</link> <description><?php include("../rss/news.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> <item> <title>商品一覧ページ</title> <link>http://○○</link> <description><?php include("../rss/prodact.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> <item> <title>沿革</title> <link>http://○○</link> <description><?php include("../rss/corporation.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> </channel> </rss>

    • 締切済み
    • XML
  • Magpie(Rss)を使ってWebサイトに複数のブログ更新を表示する方法。

     最初に…Webサイト製作をオンラインで勉強しながら、個人のサイトを製作をしてます。初心者です。質問内容でPHPを使うのですが…(RSS/PHP関係のサイトは見てきましたが…)こちらは全く知識が無いのと同じ状態です。最後の手段としてこちらへ質問させて頂きました。すみませんがご教授よろしくお願い申し上げます。    下記が内容です。 Webサイト製作をしている最中なのですが、トップページにMagpie(RSS)を使ってブログの更新状況を表示したいのです。  表示の方法は… 1.複数のRSSファイルを読み込んで、トップページに5件表示して、別ページで過去一ヶ月分のブログ最新情報を表示したい。 2.複数のブログ記事を、日付で逆ソートして最新記事を上にしてまとめて表示したい。 3.新しい情報(1,2日以内とか)には、NEW!マークとか付けて区別を付けたい。  表示の内容は…  ブログサイトのタイトル (by 名前)   ブログタイトル(2008/05/01 ○○:○○)  (※表示しきれない場合は”…”で表示) この様に表示する場合どのように記述すればよろしいのでしょうか? 記述する場所は、HTMLで表示したい場所でよろしいのでしょうか? 一応参考にしてきたサイトはこちらです。→ http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS http://ameblo.jp/yamasita-94nsr/entry-10018566158.html http://sozaifan.exblog.jp/3440754/ 長文・駄文ですみませんが、よろしくお願い申し上げます。 文字数を考えてここで一度質問します。  

  • 更新中画面の出力とファイルアップロード時のタイムアウト

    表題の件について片方だけでも良いのでご教示下さい。 1.更新中画面の出力   更新ボタンを押した後、「しばらくお待ち下さい」的なページが表示され、   その後に更新前のページに遷移するサイトなどあると思いますが、   その更新中画面の出力は一体どうすると出来るのでしょうか? 2.ファイルアップロード時のタイムアウト   ファイル容量やファイル数に合わせてタイムアウト時間を変更するのは   一体どうすると出来るのでしょうか?   予めファイル全容量がnMBなら何秒などとリテラルで決めているのでしょうか? 宜しくお願い致します。

    • 締切済み
    • PHP
  • PHPの記述についてなんですが…

    レッツPHP http://php.s3.to/net/ のRSSトピックスというスクリプトを使用したいのですが、JavaのコードをHTMLに貼り付けるとRSSが右から左に動くようにPHPで記述されています。PHPのどの部分を直せば動かず固定して表示できるのか、どなたか教えて頂けませんでしょうか?宜しくお願いします。 また、表示が一件ずつではなく、5件程度表示できるようになると更に助かります。 あと、更新時間も表示できるとなお嬉しいです。 素人でずうずうしいお願いなのですが、よろしくお願いします。

  • はてな以外でやる方法

    http://hatenadiary.g.hatena.ne.jp/keyword/RSSを使った最新情報を表示する(rssモジュール) はてなにこんな機能があります。 RSSをよみ、最新記事5件のタイトルを表示させ 内容も少し表示させる事ができます。 私のブログははてなではないので もちろんこれは使えません。(Serene Bach使用) ですが、同じような事をしたいのですが、どこかに こんなものってありますでしょうか?