2015-04-08 2 views
0

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

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

ответ

0

Попробуйте

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

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

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

0

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

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

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

0

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

+0

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