PHPの性能面からリモートファイルをダウンロードする3つの方法

2475 ワード

今日Excelをエクスポートする時、いつもエクスポートしたExcelファイルをテストして、頻繁にダウンロードして開けて、面倒なことにセグメントコードを書いて一気にサービス端にExcelをエクスポートします=>Excelファイルをローカルにダウンロードします=>そして開く操作を考えます.
ここでPHPがリモートファイルをダウンロードする案を取り出して、忘れないようにします.このうち3つ目の方法は、ファイルが大きすぎる場合のパフォーマンスの問題を考慮しています.
3つのシナリオ:
-rw-rw-r-- 1 liuyuan liuyuan 470 Feb 20 18:12 test1_fopen.php -rw-rw-r-- 1 liuyuan liuyuan 541 Feb 20 18:06 test2_curl.php -rw-rw-r-- 1 liuyuan liuyuan 547 Feb 20 18:12 test3_curl_better.php
シナリオ1、小ファイルに適用
fopen()/file_を直接使用get_contents()ファイルストリームを取得しfile_を使用put_contents()書き込み


シナリオ2:Curlによるコンテンツの取得


第1に、2つのシナリオでは、ローカルディスクに書き込む前にファイルがメモリに読み込まれ、ファイルが大きいとメモリを超えてクラッシュする可能性があるという問題があります.
メモリが十分に大きく設定されていても、これは不要なオーバーヘッドです.
解決策は、CURLに書き込み可能なファイルストリームを直接与えて、自分でこの問題を解決させることです(CURLOPT_FILEオプションを使用して)、まずファイルポインタを作成します.

 

以上、性能面からPHPでリモートファイルをダウンロードする3つの方法をご紹介しましたので、お楽しみください.