- ベストアンサー
PHPでの別のサーバーのテキストファイルの読み込み
PHPに詳しい方が居られたら教えてください。 $file="http://www.sample.com/test.txt" $fp=fopen($file,"r"); (処理) close($fp); というようにして、別のサイトにおいてあるファイルを 読み込みんで処理したい場合、 "test.txt"の内容を変えても、変更前の内容を読み込ん でしまいます。 パソコンにキャッシュされているファイルにアクセスして いると思うのですが、 "test.txt"の内容を変えたら、確実に変更後の内容を 読み込むようにする方法はありませんでしょうか? どうぞよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
file関数で出来るかはわかりませんが、 以下のような方法でだます方法もあります。 URLに ローカルタイムなど 常に変化する変数などを追加しておくと、 毎回 読み込んでくれるはずです。 $a = time(); $file="http://www.sample.com/test.txt" . "?" . $a;
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
>ちなみに、test.phpのヘッダーに下記メタタグを >追加する方法ではなぜか、うまくいきませんでした。 httpのヘッダーを吐いてみてください <? header("Cache-Control: no-cache"); ほか・・・ ?>
お礼
<? header("Cache-Control: no-cache"); header("Pragma: no-cache"); ?> をtest.phpの最初で出力してみましたが、 やはりダメでした。 不思議です。 しかし、ご回答ありがとうございました!
- yambejp
- ベストアンサー率51% (3827/7415)
キャッシュを無効にするヘッダをたくさん吐いておくことです Last-Modified Expires Pragma Cache-Control あたりで調べてみては?
お礼
なるほど。HTTPが備えるキャッシュの仕組みを利用を利用できるのですね。わかりました。どうもありがとうございました。
- edomin7777
- ベストアンサー率40% (711/1750)
ブラウザの設定次第だと思いますが…。
お礼
クライアントが多岐にわたり、ブラウザ毎の設定だと対応が難しいケースでの質問になります。しかし、ご回答ありがとうございました。
お礼
test.php 内で、 <? rewuire("test2.php"); ?> として、test2.php内で、 ------------------------------- $a = time(); $file="http://www.sample.com/test.txt?".$a; $fp=fopen($file,"r"); (処理) close($fp); --------------------------------- としてうまくいきました。 どうもありがとうございました! ちなみに、test.phpのヘッダーに下記メタタグを 追加する方法ではなぜか、うまくいきませんでした。 <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Cache-Control" content="no-cache /"> <meta http-equiv="Expires" content="-1" /> 上記のような構成の場合、ヘッダー情報を操作して、 キャッシュしなくする方法があれば、 引き続きご教授いただければ幸いです。 もう少しご回答を受け付けますので、 ご存知の方がが居られましたら よろしくお願いいたします。