php readfile_chunked не работает через 5 минут - PullRequest
0 голосов
/ 17 ноября 2011

Это то, что у меня есть в данный момент:

$chunksize = 1024*4;
$h = fopen($file, 'rb');
set_time_limit(600);
while(!feof($h)){
    echo fread($h, $chunksize);
    flush();
}
fclose($h);

Я пытался увеличить размер чанка, я пытался сбрасывать время ожидания при каждой итерации, я пытался установить время ожиданиядо нуля (изначально было 5 минут), я даже пытался поместить flush () вне цикла, чтобы позволить своему буферу позаботиться об этом, и каждый раз, когда загрузка уходит ровно через 5 минут. Иногда это 50,2 МБ, иногда это54,8 или что-то среднее, так что я знаю, что это не размер файла.php_info () говорит, что максимальное время составляет 30 секунд, поэтому каким-то образом я могу увеличить его до 300, но это все.

Есть ли в IIS (сервер 2003) что-то, что могло бы его переопределить?

Ответы [ 2 ]

0 голосов
/ 13 января 2012

У меня возникла ТОЧНАЯ та же проблема ..

Для всех, кто ищет, эти решения специфичны для Windows IIS

Я только что потратил 2 дня на то, чтобы попробовать все возможные конфигурации с настройкой300 секунд, чтобы попытаться устранить проблему.

Я изменил значение CGITimeout в метабазе, но в моем случае виновником оказался ini-файл FastCGI (находится в c:\windows\system32\inetsrv\fcgiext.ini)

Существует настройка (в секундах):

ActivityTimeout=300

Измените это значение и перезапустите IIS.

0 голосов
/ 15 декабря 2011

Ах, Microsoft MVP. Всякий раз, когда они говорят, что что-то невозможно, вы знаете, это просто копание.

http://www.murraymoffatt.com/software-problem-0002.html

Я смог дать этому конкретному файлу неограниченное время выполнения, не затрагивая остальную часть сайта.

EDIT: Похоже, эти статьи начинают исчезать.

Сброс FastCGI Timeout в IIS 5.0 (Win2K):

  • Запустите консоль управления IIS (Пуск => Настройки => Панель управления => Администрирование => Диспетчер служб Интернета).
  • В дереве на левой стороне консоли вы должны увидеть «Интернет» Информационные службы "на самом верху, затем под этим названием твой компьютер. Щелкните правой кнопкой мыши имя вашего компьютера и выберите «Свойства».
  • В разделе «Основные свойства» находится список; убедиться, что "WWW Service" показывает, затем нажмите кнопку "Редактировать".
  • Нажмите на вкладку «Домашний каталог».
  • Нажмите кнопку «Конфигурация» в области «Настройки приложения».
  • Нажмите на вкладку «Параметры процесса».
  • В области Конфигурации CGI есть значение «Время ожидания сценария CGI» указано в секундах. Значение по умолчанию составляет 300 секунд (5 минут).
  • Измените это значение так, как бы вы хотели, чтобы ваш тайм-аут был.
  • Пройдите, нажимая кнопку «Ок» в каждом окне, пока не получите Вернемся к консоли управления IIS. Закрыть управление консоль.
  • Перезагрузите IIS, открыв командную строку (Пуск => Программы => Аксессуары => Командная строка) и введите команду: iisreset

IIS 5.1 (WinXP):

  • Открыть IIS.
  • Развернуть имя компьютера.
  • Щелкните правой кнопкой мыши «Веб-сайты» и выберите «Свойства».
  • Перейдите на вкладку «Домашний каталог».
  • Нажмите кнопку «Конфигурация», откроется другое окно.
  • Перейдите на вкладку «Параметры процесса».
  • Установи, как душе угодно.
  • Хорошо.

Вот инструкции для IIS 6.0: http://www.iisadmin.co.uk/?p=7 но ссылка на скачивание MetaEdit не работает, поэтому попробуйте здесь: http://support.microsoft.com/kb/301386

...