esergey
Новичок
Разархивирую с gzread большие файлы - порядка 200 MB. Для этого написана отдельная функция, которая разархивирует во временный файл, потом его переименовует. Вижу постоянно зацикливание (временный файл формируется несколько раз) Хотя никакого цикла нет. Прописывал разные сообщения для отладки - выводились по одному разу. А вот временный файл почему то формируется несколько раз. Иногда нормально срабатывает. В чем может быть проблема?
В конце должно происходить удаление временного файла, так во время сбоев - не удаляется. Запускаю через Оперу.
В конце должно происходить удаление временного файла, так во время сбоев - не удаляется. Запускаю через Оперу.
PHP:
private function gzunzip_file ($file_name)
{
echo $file_name."gzunzip_file";
$out_filename = $file_name.rand().'tmp';
$zip = gzopen($file_name, 'rb');
// var_dump($zip);
if ($zip) {
$fp = fopen($out_filename, "w");
$buf='';
while (!gzeof($zip) ) {
// echo "<p>".$buf."<p>";
$buf=gzread($zip,8024);
fwrite($fp,$buf);
$buf='';
}
fclose($fp);
gzclose($zip);
unlink ($file_name);
if(!copy($out_filename, $file_name))
{
echo "не смог скопировать";
exit;
}
$s=unlink($out_filename);
if(!$s)
{
// while(unlink($out_filename))
{
$z=0;
echo $out_filename."<br>";
}
}
return true;
}
else return false;
}