ストリームからコピー-さまざまな方法を比較

phpからタスクがありました://目的のファイルにデータをコピーする入力。

私は、PHPからサイズが9メガバイトのファイルをコピーする方法について、速度を確認することにしました:// stdin。

それらのいくつかがあります:

Fread / fwriteの結果:

メモリ不足: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で実行しました。



All Articles