ホームページ >バックエンド開発 >PHPチュートリアル >PHP の file_get_content はメモリに読み込まれたファイルの内容を破壊しませんか?解決方法

PHP の file_get_content はメモリに読み込まれたファイルの内容を破壊しませんか?解決方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 13:28:101814ブラウズ

PHP の file_get_content はメモリに読み込まれたファイルの内容を破壊しませんか?
少し前に自分用に書いた小さなプログラム: 指定されたフォルダー内のファイルを走査し、指定されたコンテンツを検索します

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->// 这种用法很占用内存,几乎每次都出错
$content = file_get_contents($file);

// 成功
$content = '';
$fp = fopen($file, 'r');
$content .= fread($fp, 10240);
// 即使没有fclose(),在函数内调用仍然会顺利运行完毕

おそらく file_get_contents( ) は、通話終了後に読み取られたファイルの内容メモリを破壊しません。しかし、なぜ? PHP 開発者が私より愚かだとは思いませんが、これは愚かな設計のように思えます

-----解決策------------- - ------
file_get_contents()


fopren()
fread(filesize())
fclose()

と同等です。つまり、次の時点でファイルをメモリに読み取ります。巨大なファイルに遭遇した場合、メモリが不足します
そして $content .= fread($fp, 10240);
毎回 10k しか読み込まない場合、もちろんそれは簡単ではありません問題を引き起こす
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。