php zipアーカイブを使用して巨大なファイル(400 + Mが4Gで圧縮されている)を解凍しようとしています。zipファイルで1つのcsvファイルのみを解凍しています。興味のあるファイルを解凍すると、4Gを超えます。ファイルの最後から最大3つのレコードを取得し、プロセスがララランドに移ります。 。つまり、プロセスは単純に進行します。出力はありません。エラーは発生しません。ループは発生しません。処理が何をしているのかわかりません。コードは単純です。
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE)
{
$num = $zip->numFiles;
for($i = 0; $i < $zip->numFiles; $i++)
{
$filename = $zip->getNameIndex($i);
// if its the file I want then...
$content = '';
// my output file .. yes I've already checked to make sure the dir exists
$unzipped = fopen($dir ."/2" . $filename , 'wb');
$fp = $zip->getStream($filename);
if(!$fp) exit("failed\n");
while (!feof($fp))
{
$chunkSize = 10240;
$contents = fread($fp, $chunkSize);
$fwrite = fwrite($unzipped, $contents);
}
fclose($fp);
fclose($unzipped);
}
$zip->close();
fclose($filename);
}
進行状況を追跡するために別のファイルに移動する書き込みステートメントを削除しました。私はファイルの大部分を取り出します..(ファイル全体の3つのレコードが不足していると言ったように)...しかし、プロセスはどこかで起こっているようです..それは恐怖で起こります私は何が起こっているのか理解できません.. eofに到達していません..ソースはそのままです(freadの直前にis_source($ fp)でチェックされます..エラーはスローされません..ブラウザを閉じても停止しません..停止することもできませんapache..それを終了するにはシャットダウンする必要があります...
何か案は??
ありがとう