人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの質問です。
外部ファイルを読み込むための命令は、大まかにfile関数とfopen関数の二つがありますが、以下の命令の場合について教えてください。
以下のコードを書きました
file関数
$d4 = file($filedate);
$d3 = join("",$d4);

fopen関数
$d4 = @fopen($filedate,"r");
while(!feof($d4)){
$d3 .= fgets($d4, 3200);
}
fclose($d4);

要するに$d3にファイルソースをすべて読み込ませたいです。実際にはこれをファイル数分ループさせます。
試してみたところfopenは約6000、fileは約26000読み込めました。
fopen命令はこういった命令には向かないのでしょうか?それとも書き方や読み込むファイルが悪いのでしょうか…
fopenはfileより低メモリでできると書いてあったのですが、この結果からだと間違っているようなのですがどうなのでしょう?

●質問者: 牛乳先生(tukihatu)
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:D3 D4 PHP コード ソース
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● pahoo
●60ポイント

下記のコメントでいただいた情報を含めて回答します。


fopenは約19000ファイルで処理が止まり$d5の結果が表示されず、fileは約26000ファイルで$d5の結果も表示できました

これは、fopen関数の問題というより、whileループを回しているオーバーヘッドがあるために、file関数の場合より少ないファイル数でタイムアウトしてしまったのだと考えられます。


確証はありませんが、file関数を使った場合よりfile_get_contents関数を使った方が、少しだけ読み込み可能なファイル件数が増えるのではないでしょうか。

◎質問者からの返答

なるほどそっちですか…代わりの命令で上手い方法はないのでしょうか?

今回の例では確かにfileよりはfile_get_contentsがいいですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ