Тайм-аут PHP ZipArchive

В настоящее время я пытаюсь найти обходной путь, чтобы предотвратить истечение времени ожидания PHP-скрипта при создании .zip с использованием класса ZipArchive.

Мне удалось сделать это без проблем, переопределив максимальное время выполнения скрипта внутри php.ini с помощью set_time_limit(). Однако не гарантируется, что безопасный режим будет отключен внутри php.ini на серверах, на которых будет работать скрипт, и у меня нет доступа к файлу php.ini. Есть ли другой способ остановить время ожидания скрипта? Можно ли запустить ZipArchive как фоновую задачу?


person lewnelson    schedule 08.04.2015    source источник


Ответы (3)


Я думаю, что тайм-аут не проблема. Это будет решено с помощью ini_set max_execution_time. Но проблема с ограничением памяти. Я не сталкиваюсь с проблемой тайм-аута при создании zip-файла каталога 5.8G. но у меня проблема с ограничением памяти.

person Jincowboy    schedule 19.11.2017
comment
ini_set('max_execution_time', 600); Это хорошо работает в моем конце. - person Jincowboy; 19.11.2017

Пытаться

ini_set('max_execution_time', 60); //60 seconds = 1 minute

ini_set('max_execution_time', 0); //0=NOLIMIT

Но на общем хосте могут быть наложены ограничения, поэтому, если эти функции не работают должным образом, обратитесь к администратору сервера.

person Róger William Calderini    schedule 08.04.2015

Я тоже пытаюсь решить эту проблему, set_time_limit бесполезен на виртуальном хостинге в безопасном режиме или отключен на сервере.

Я использую вызовы PHP на стороне клиента Ajax для пошаговой обработки архивации, однако это открыло несколько новых проблем. Тайм-аут сценария и своего рода «контрольная точка», чтобы я мог возобновить операцию продолжения.

Поэтому я рекомендую использовать реализацию ajax/клиентской стороны, чтобы запустить php для выполнения работы, зная, что скрипт может не завершиться за один вызов, но может принять N вызовов, и хотя операция может занять достаточно много времени в PHP, чтобы тайм-аут скрипта вы все равно могли добавьте логику для проверки прошедшего времени и попытайтесь сохранить состояние до тайм-аута и покройте оба случая в клиенте для тайм-аута / ручного отключения.

person fr332lanc3    schedule 26.02.2017