Задержка между двумя одновременными загрузками php-файлов из одного и того же скрипта - PullRequest
1 голос
/ 26 ноября 2009

У меня странная проблема: если я пытаюсь загрузить более одного файла с одним и тем же сценарием загрузки (я пробовал 5 различных сценариев, найденных на php.net), первый работает хорошо, но второй имеет задержкуоколо 60 секунд с момента его запроса.Если я отменяю первую загрузку, то вторая начинается внезапно.Я проверил прямую загрузку файлов из Apache, и все в порядке.Это последний скрипт, который я пробовал:

<?php
$filename= $_GET['file'];

header("Content-Length: " . filesize($filename));
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=writeToFile.zip');

$file_contents = file_get_contents($filename);
print($file_contents);
?>

Ответы [ 3 ]

2 голосов
/ 26 ноября 2009

Может ли быть так, что базовый веб-сервер имеет ограничение на количество одновременных подключений с одного и того же IP? Можете ли вы попробовать два разных IP одновременно?

1 голос
/ 19 июля 2010

нет, нет нет ... проблема где-то еще

вы начали сеанс (вручную или автоматически) и сессии обычно хранятся в файлах ...

поэтому, когда откройте первый скрипт, затем откройте сеанс и LOCK FILE ... другой запрос должен ждать разблокировки файла сеанса ...

Существуют два решения ... - использовать собственный класс для хранения сессии ... без блокировки файловой сессии (скрипты с ошибками могут перезаписывать данные сессии) - или до вызова file_get_content session_write_close ();

0 голосов
/ 26 ноября 2009

Вы можете попробовать readfile($filename) вместо $file_contents = file_get_contents($filename);print($file_contents); Поскольку readfile() не сохраняет содержимое в строке, оно не занимает память, как file_get_contents().

@ У Пекки Гайзер есть хорошие замечания по поводу одновременных соединений. Также посмотрите, какие ограничения памяти использует ваш PHP.

...