Обнаружил проблему в работе моего сервера (Apache2+PHP5 под виндой):
когда пользователь начинает скачивать какой-либо довольно большой файл, то он не может
открыть ни одной страницы сайта (даже если открывает новое окно explorer-а) до
тех пор, пока данный файл не скачается.
Я подозреваю, что дело тут в настройказ httpd.conf, хотя на мой взгляд, все верно.
Подскажите, пожалуйста, что я не так прописал.
Заранее спасибо!
PHP
# Timeout: Время ожидания в секундах, прежде чем сервер примет или # отправит сообщение о тайм-ауте. # Timeout 300 # # KeepAlive: Признак, позволено или нет устанавливать долговременные # соединения (persistent connections) (т.е. когда обрабатывается более # одного запроса на соединение). Для запрета укажите значение Off. # KeepAlive On # # MaxKeepAliveRequests: Максимальное число запросов, допустимое в одном # долговременном соединении. Для снятия ограничений обнулите параметр, # но для максимального быстродействия мы рекомендуем указать заведомо # большое конкретное значение. # MaxKeepAliveRequests 0 # # KeepAliveTimeout: Время ожидания в секундах следующего запроса от # одного и того же клиента в одном подключении. # KeepAliveTimeout 15 # # Для обработки запросов Apache для Win32 всегда порождает один дочерний # процесс. Если он по каким-либо причинам будет преждевременно завершен, # другой дочерний процесс создается автоматически. Поступающие запросы # внутри такого дочернего процесса обрабатываются отдельными потоками. # Следующие две директивы управляют поведением таких потоков и процессов. # # MaxRequestsPerChild: Число запросов, которое позволено обрабатывать # дочернему процессу до переполнения. При переполнении дочерний процесс # будет принудительно завершен, чтобы избежать проблем при длительной # непрерывной работе, если Apache (или используемые им библиотеки), # допускают утечку памяти или других ресурсов. На большинстве систем # это не требуется, но некоторые (например, Solaris) имеют заметные # утечки в библиотеках. Если нет других рекомендаций, для Win32 # установите значение 0 (без ограничений). # MaxRequestsPerChild 0 # # ВНИМАНИЕ: значение MaxRequestsPerChild, отличное от 1, # иногда приводит к аварийному завершению mod_php, начиная с версии # PHP 4.3.0-pre2 (можно протестировать по адресу # http://localhost/phpmyadmin/, нажимая несколько раз Reload). # # # ThreadsPerChild: Число одновременно выполняющихся потоков (т.е. # запросов), которое допускает сервер. Установите это значение в # соответствии с требуемой загрузкой сервера (больше активных запросов # одновременно означает, что они обслуживаются медленнее) и объемом # системных ресурсов, который вы можете предоставить серверу. # ThreadsPerChild 300
Спустя 21 минута, 25 секунд (27.03.2007 - 11:12) vasa_c написал(а):
А страницы других сайтов он при этом открывать может?
Спустя 7 минут, 51 секунда (27.03.2007 - 11:20) Aragorn написал(а):
Цитата(vasa_c @ 27.3.2007, 11:12) [snapback]16669[/snapback]
А страницы других сайтов он при этом открывать может?
Да.
Спустя 2 часа, 11 минут, 34 секунды (27.03.2007 - 13:32) welder написал(а):
У тебя на какой основе построена сетка ? И какая пропускная возможность твоего канала. И если уж на то пошло что пользователи пользуются сервером, найди ты старенький(относительно) комп заряди на него бздю или линух и будет тебе сто лет счастье :)
Спустя 23 минуты, 35 секунд (27.03.2007 - 13:55) Aragorn написал(а):
Цитата(welder @ 27.3.2007, 13:32) [snapback]16678[/snapback]
найди ты старенький(относительно) комп заряди на него бздю или линух и будет тебе сто лет счастье
![smile.gif](html/emoticons/smile.gif)
За совет спасибо, однако дело у меня похоже не в сети,
так как у меня есть локальная копия сервака - а на ней та же самая беда.
P.S. Пропускная способность сети - 18 мегабит (VDSL)
Спустя 4 дня, 20 часов, 44 минуты, 18 секунд (2.04.2007 - 10:40) Aragorn написал(а):
Заметил такую вещь:
если просто указать ссылку на файл, к примеру <a href="somefile.rar">скачать</a>, то во время скачивания
пользователь без проблем открывает страницы.
Я же использую предварительно скрипт, который проверяет права доступа на скачивание файла и увеличивает счетчик (общее число загрузок).
Вот фрагмент формирования meta-данных:
if (preg_match("/MSIE/i",$_SERVER['HTTP_USER_AGENT']) && !preg_match("/Opera/i",$_SERVER['HTTP_USER_AGENT'])) {
header('Content-Disposition: inline; filename="'.$file_name.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else {
header('Content-Disposition: attachment; filename="'.$file_name.'"');
header('Expires: 0');
header('Pragma: no-cache');
}
header("Content-Length: ".filesize($full_path));
header("Content-Type: ".$content_type);
readfile($full_path);
exit;
Может здесь что-то не так.
Вообще, кто какие скрипты использует для скачки? Поделитесь опытом плиз.
если просто указать ссылку на файл, к примеру <a href="somefile.rar">скачать</a>, то во время скачивания
пользователь без проблем открывает страницы.
Я же использую предварительно скрипт, который проверяет права доступа на скачивание файла и увеличивает счетчик (общее число загрузок).
Вот фрагмент формирования meta-данных:
if (preg_match("/MSIE/i",$_SERVER['HTTP_USER_AGENT']) && !preg_match("/Opera/i",$_SERVER['HTTP_USER_AGENT'])) {
header('Content-Disposition: inline; filename="'.$file_name.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else {
header('Content-Disposition: attachment; filename="'.$file_name.'"');
header('Expires: 0');
header('Pragma: no-cache');
}
header("Content-Length: ".filesize($full_path));
header("Content-Type: ".$content_type);
readfile($full_path);
exit;
Может здесь что-то не так.
Вообще, кто какие скрипты использует для скачки? Поделитесь опытом плиз.