• ベストアンサー

PHPでの別のサーバーのテキストファイルの読み込み

PHPに詳しい方が居られたら教えてください。 $file="http://www.sample.com/test.txt" $fp=fopen($file,"r"); (処理) close($fp); というようにして、別のサイトにおいてあるファイルを 読み込みんで処理したい場合、 "test.txt"の内容を変えても、変更前の内容を読み込ん でしまいます。 パソコンにキャッシュされているファイルにアクセスして いると思うのですが、 "test.txt"の内容を変えたら、確実に変更後の内容を 読み込むようにする方法はありませんでしょうか? どうぞよろしくお願いします。

  • PHP
  • 回答数4
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

file関数で出来るかはわかりませんが、 以下のような方法でだます方法もあります。 URLに ローカルタイムなど 常に変化する変数などを追加しておくと、 毎回 読み込んでくれるはずです。 $a = time(); $file="​http://www.sample.com/test.txt"​ . "?" . $a;

neo1124
質問者

お礼

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" /> 上記のような構成の場合、ヘッダー情報を操作して、 キャッシュしなくする方法があれば、 引き続きご教授いただければ幸いです。 もう少しご回答を受け付けますので、 ご存知の方がが居られましたら よろしくお願いいたします。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

>ちなみに、test.phpのヘッダーに下記メタタグを >追加する方法ではなぜか、うまくいきませんでした。 httpのヘッダーを吐いてみてください <? header("Cache-Control: no-cache"); ほか・・・ ?>

neo1124
質問者

お礼

<? header("Cache-Control: no-cache"); header("Pragma: no-cache"); ?> をtest.phpの最初で出力してみましたが、 やはりダメでした。 不思議です。 しかし、ご回答ありがとうございました!

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

キャッシュを無効にするヘッダをたくさん吐いておくことです Last-Modified Expires Pragma Cache-Control あたりで調べてみては?

neo1124
質問者

お礼

なるほど。HTTPが備えるキャッシュの仕組みを利用を利用できるのですね。わかりました。どうもありがとうございました。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

ブラウザの設定次第だと思いますが…。

neo1124
質問者

お礼

クライアントが多岐にわたり、ブラウザ毎の設定だと対応が難しいケースでの質問になります。しかし、ご回答ありがとうございました。

関連するQ&A

  • PHPで生成したテキストファイルをダウンロード

    PHPでMySQLデータベースからデータを取得してテキストファイルに出力し、それをダウンロードさせるプログラムを制作しています。 ただ、現在のやり方ではテキストファイル出力時の確認用にprintでページ内に表示させるものが、すべてダウンロードしてきたファイルに書き込まれてしまいます。 ダウンロード処理前に出力されて残っているテキストファイルは正常なので、ダウンロードの設定が悪いのだろうと思いますが、どう設定してやればいいのか分からない状態です。 以下ソース(テキストファイル生成部分などは省略します) <?php /////////////////////////////// //データベースからデータを取得 /////////////////////////////// //ファイルを書き込み専用で開く $file = fopen("sample.txt", 'w'); /////////////////////////////// //printでデータを表示しながらファイルへ出力 /////////////////////////////// //ファイルをクローズ fclose($file); // MySQLに対する処理 $close_flag = mysql_close($link); if ($close_flag){ print('<p>切断に成功しました。</p>'); } download_file("sample.txt"); function download_file($tmp_file) { // ダウンロードさせるファイル名 //$tmp_file = "./sample.txt"; $j_file = "sample.txt"; $j_file = mb_convert_encoding($j_file, "SJIS", "UTF-8"); /* ファイルの存在確認 */ if (!file_exists($tmp_file)) { die("Error: File(".$tmp_file.") does not exist"); } /* オープンできるか確認 */ if (!($fp = fopen($tmp_file, "r"))) { die("Error: Cannot open the file(".$tmp_file.")"); } fclose($fp); /* ファイルサイズの確認 */ if (($content_length = filesize($tmp_file)) == 0) { die("Error: File size is 0.(".$tmp_file.")"); } // ヘッダ header("Content-Type: application/octet-stream"); // ダイアログボックスに表示するファイル名 header("Content-Disposition: attachment; filename=$j_file"); //表示するファイルサイズ header("Content-Length: ".$content_length); header('Pragma: no-cache'); header('Cache-Control: no-cache'); // 対象ファイルを出力する。 readfile($tmp_file); exit; } ?>

    • ベストアンサー
    • PHP
  • 【PHP】書き込みできません

    PHP5.3の環境でファイル書き込みのロジックがうまくいかずに困っています。 環境は下記の通りです。 Apache 2.2.2 PHP 5.3.3 コードは下記の通りです。 >>CODE $file_path = "/home/xxxxx/logs/test.txt"; echo file_exists($file_path); echo "file_path1=".$file_path; if ( file_exists($file_path) ) { echo "file_path2=".$file_path; // ファイルポインタ取得 if ( ($fp = fopen($file_path, 'a')) !== FALSE ) { // ログは追記 echo "file_path3=".$file_path; // ファイルポインタに書き込み fwrite($fp, $date."\n"); fwrite($fp, $body); fwrite($fp, "----------------------------------------------------\n"); // ファイルポインタクローズ fclose($fp); $flg = true; } } <<CODE 権限は下記の通りです。 logs 777 test.txt 777 現象は下記の通りです。 echo文のfile_path1は表示されます。 echo文のfile_path2及びfile_path3は表示されません。 $file_path="/home/logs/test.txt";に変更すると、 echo文のfile_path1及びfile_path2が表示されます。 echo文のfile_path3は表示されません。 ファイルが存在することはlsで確認したので間違いありません。 権限も777にしているので、何がおかしいのか困り果ててしまい、初めて投稿させて頂きました。 PHPやApacheの設定ファイル等も問題あるのでしょうか。 どうぞご指摘お願いいたします。

  • PHP5のsimplexml_load_fileで取得した結果をファイルに書き込みたい

    よろしくお願いします。 PHP5でSimpleXMLを利用して得られた結果をファイルに書き込む、つまりキャッシュを保存したいのですが、以下のようにやっても作成されるファイルは空のままです。ディレクトリモードは755です。 $url = "http://hoge.co.jp/index.php?a=123"; $cache_file = md5($url); $xml = simplexml_load_file($url); $fp = fopen($cache_file, 'w'); fwrite ($fp, $xml); fclose($fp); どうかご教授よろしくお願いします。

    • 締切済み
    • PHP
  • テキストファイルの読み込み

    http://www.ajaxtower.jp/ini/html/index1.htmlにあるサンプルで xmlHttp.open("GET", "http://www.ajaxtower.jp/sample/readfile.txt", true); の、ファイルの場所を変えたいのですが、とりあえず、同じフォルダ内のテキストファイルtest.txtにアクセスしようと、"./test.txt"に変えて、クリックしても何も表示されませんでした。 apacheを起動してhtdocsにtest.txtを入れて"files://localhost/test.txt"に入れてもダメでした。 xmlHttp.openが読めるtextファイルは、どういう状態である必要があるのでしょうか?

  • さくらサーバーのcronでphpを動かしてファイルを作りたい。

    さくらサーバーのcronでphpを動かしてファイルを作りたい。 cron.php <?php $date = date("Y/m/d H:i:s"); $fp = fopen("./cron.txt", "w"); flock($fp, LOCK_EX); fputs($fp,$date); fclose($fp); print "cron成功"; ?> cron報告レポートには[cron成功]の文字が出ているので、cronコマンドは間違っていないのですが、cron.txtが作れていません。 直接、cron.phpにアクセスすると、[cron成功]と文字が出てcron.txtも作れています。 どうすればcron.txtが作れるのでしょうか。 よろしくお願いします。

  • phpで二重書込みできないプログラムを作りたい

    PHP初心者です。 テキストファイルに、ある文字列を書き込むプログラムを作ろうとしています。 ファイル内容に同じ文字列があれば書き込まず、 同じ文字列が無ければファイルに書き込むという プログラムを作りたいのですが、 うまくいきません。 どなたかアドバイスをお願いします。 <?php $name = "文字列"; $fp = @fopen("file.txt", "r"); $contents = @file_get_contents($fp); if(ereg($name, $contents)) { print "登録済みです。" ; } else { $fpa = @fopen("file.txt", "a"); fputs($fpa, "$name\n"); fclose($fpa); print "登録しました。"; } fclose($fp); ?>

    • 締切済み
    • PHP
  • 外部ファイルの読み込み

    3つのファイルが同じディレクトリに入っているのですが、「main.php」を開くとphpがそのままテキストで表示されてしまいます。 phpを読み込んでhtml化した状態で表示するにはどうしたらいいでしょうか? test.txt ----------- テスト ----------- test.php ----------- <?PHP file_get_contents("test.txt"); ?> ----------- main.php ----------- <?PHP file_get_contents("test.php"); ?> ----------- main.phpを開くと ----------- <?PHP file_get_contents("test.txt"); ?> ----------- と表示されてしまいます。

    • ベストアンサー
    • PHP
  • 別のサーバーのテキストファイルの読み込み

    別のサーバーに置いてあるテキストファイルを読み込み、 HTML上にて表示させる方法はありませんか? 携帯でも表示させたいので、フレームは使いたくありません。 また、テキストファイルは、直接見えてしまっても問題ありません。 HTMLファイル 例:http://www.com/test.php TEXTファイル 例:http://www.net/test.txt

    • ベストアンサー
    • PHP
  • テキストファイルの読み込みについて教えて

    また教えてください test13.txtの中身を1,2,3,4,5,6として、以下をコンパイルスルと、 printf("%d\n",a[0]);のときは 1 と結果がでますが printf("%d\n",a[3]);とすると -858993460などと、わからない数字がでます、どこがおかしのか初心者なのでさっぱりわかりません。 #include <stdio.h> int main(void) { int i; int a[6]; FILE *file; file = fopen("d:\\test\\test13.txt","r"); for(i=0;i<6;i++) fscanf(file,"%d",&a[i]); fclose(file); printf("%d\n",a[3]); return 0; }

  • 無料ホームページの鯖でPHPでfwrite出来ない

    無料ホームページのサーバに"php"というフォルダをアップし、その中に"write.php", "text.txt","read.php"というファイルを作って実行させたのですが、 "write.php"で、 $file = "text.txt"; $fp = fopen($file, "w"); if ($fp == FALSE) { print "ファイルオープン失敗<br />"; } else { fwrite($fp, $text); fclose($fp); } を実行しても"text.txt"の内容が変わらない(空のまま)のですが、何がいけないのでしょうか? "text.php"のパーミッションは666で、"php"フォルダは707です。 考えられる原因をご教授下さい、お願いします。

    • 締切済み
    • PHP

専門家に質問してみよう