私は、PHPからサイズが9メガバイトのファイルをコピーする方法について、速度を確認することにしました:// stdin。
それらのいくつかがあります:
- fread()によるブロックの読み取りとfwrite()による書き込み
- file_put_contents()を使用してコンテンツを記録file_get_contents()を使用して取得したデータ
- copy()ファイルコピー機能を使用したコピー
- stream_copy_to_stream()を使用します。 PHP5に登場
メモリ不足:9440バイト。
使用時間:0.09秒。
結果file_get_contents / file_put_contents:
メモリ不足:940バイト。
費やされた時間:0.06秒。
()の結果をコピー:
メモリー不足:1008バイト。
費やした時間:0.05秒;
Stream_copy_to_streamの結果:
メモリ不足:1240バイト。
費やした時間:0.04秒。
最も興味深いのは、stream_copy_to_streamがcopy()よりも高速であることが判明したことです。 ストリームではなく通常のファイルを使用する場合、結果はおそらくコピーを支持します()
UPD: phpclub.ru/paste/index.php?show = 1993-テストコード
UPD 2: 240Mbのファイルでテスト済み。 fread / fwrite以外はすべて勝ちます(60秒に対して約30秒)。
したがって、大きなファイルでは、php.iniの対応するmemory_limit値が必要になるため、このファイルとfile_get_contentsを使用することはお勧めしません。
その結果、stream_copy_to_streamで実行しました。