所有しているリモートサーバーから直接リンクを使用してファイルをダウンロードするPHPスクリプトがあります。大きなファイル(〜500-600 MB)と小さなファイル(〜50-100 MB)の場合があります。
スクリプトからのいくつかのコード:
$links[0]="file_1";
$links[0]="file_2";
$links[0]="file_3";
for($i=0;$i<count($links);$i++){
$file_link=download_file($links[$i]); //this function downloads the file with curl and returns the path to the downloaded file in local server
echo "Download complete";
rename($file_link,"some other_path/..."); //this moves the downloaded file to some other location
echo "Downloaded file moved";
echo "Download complete";
}
私の問題は、大きなファイルをダウンロードしてWebブラウザーからスクリプトを実行すると、完了するまでに最大5〜10分かかり、スクリプトが「ダウンロード完了」までエコーしてから完全に停止することです。スクリプトが終了する前にダウンロードされていたファイルが100%ダウンロードされていることにいつも気づきます。
一方、Webブラウザから50〜100 MBのような小さなファイルをダウンロードしたり、コマンドシェルからスクリプトを実行したりすると、この問題はまったく発生せず、スクリプトは完全に完了します。
私はこれに自分のVPSを使用しており、サーバーに時間制限はありません。致命的なエラーやメモリ過負荷の問題はありません。
ssh2_sftp
また、リモートサーバーからファイルをコピーするために使用しました。しかし、Webブラウザから実行した場合も同じ問題が発生します。それは常にファイルをダウンロードし、次の行を実行してから死にます!非常に奇妙な!
この問題を解決するにはどうすればよいですか?