Проблема с gzread (разархивирование больших файлов)

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;
}
 

Andreika

"PHP for nubies" reader
А вот временный файл почему то формируется несколько раз.
ну у нас тут какбэ 2 варианта -
первый - пхп, выполняя указанный вам код, страшно глючит и выполняет этот код
PHP:
$out_filename = $file_name.rand().'tmp';
      $zip = gzopen($file_name, 'rb');
несколько раз, хотя циклов никаких нет

второй - данная функция вызывается несколько раз потому, что либо её вызывают несколько раз в другом куске кода, который вы не привели
либо сам скрипт выполняется в нескольких экземплярах одновременно, что может являться следствием использования гумнобраузера с какой нибудь новой фичей megaboostdownload, закачивающей html страницу в 5 потоков

Прописывал разные сообщения для отладки - выводились по одному разу
а вы не в браузер, вы в логфайл пишите
 

esergey

Новичок
Циклов никаких нет. Проверял достаточно. Думал может у меня глюки.

Подозрения возникли, когда пробовал через крон get ом запустить скрипт. Получал ошибку - сервер неожиданно закрыл соединение. Вот и возникло подозрение, что возможно браузер повторно запрос отправляет. Это для меня темный лес. Нифига не понимаю что происходит.

Судя потому что файл создается несколько раз, в логи запись тоже будет по несколько раз выводится. При этом в браузере - один раз выдается. И что это все значит?

Сорее всего вы правы, что
либо сам скрипт выполняется в нескольких экземплярах одновременно, что может являться следствием использования гумнобраузера с какой нибудь новой фичей megaboostdownload, закачивающей html страницу в 5 потоков
но я в этом нифига не понимаю. Может кто обьяснит более подробно?
 
Сверху