外部RSSフィードの最新エントリをページに表示する必要があります。 私はキャッシュファイルを使用するシンプルなRSSリーダーを作った。PHP:DOMDocument :: load():I/O警告:外部エンティティ(外部RSSフィードおよびキャッシュファイル)の読み込みに失敗しました
それは完全に私のテスト環境で動作しますが、私は私のウェブサイト上に置いたとき、私はエラーにキャッシュファイルが書き込まれていないすべての時間を得た:
警告:のDOMDocument ::負荷():I/O警告:.../index.phpの外部エンティティ ".../rssRadio.xml.cache"を45行目に読み込めませんでした。
これはページのコードです。ライン45、それは最後の一つだ:私はページをリロードした場合
$cacheName = 'cache/rss.xml.cache'; $ageInSeconds = (3600*2); // two hour if(!file_exists($cacheName) || filemtime($cacheName) < time() - $ageInSeconds) { $contents = file_get_contents($RSSURL); file_put_contents($cacheName, $contents); } $rss = new DOMDocument(); if (!$rss->load($cacheName)) { throw new Exception('Impossibile caricare i podcast'); } $feed = array(); foreach ($rss->getElementsByTagName('item') as $node) {
...
、エラーがなくなっていると、コンテンツは、それが示されていますので、キャッシュファイルが正常に動作します。
file_put_contents呼び出しが終了する前に、スクリプトがキャッシュファイルを読み取ろうとしているように見えます。しかし、これは不可能です。なぜなら、これは入出力I/O呼び出しをブロックするからです...そうですか? アイデア
乾杯お待ちください
私は自分でそれを理解していないと信じられません... ありがとうございました。 –