Таймауты PHP и функция FTP - PullRequest
1 голос
/ 18 июля 2010

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

Пока что это, похоже, решило проблему тайм-аута, но, учитывая размер файлов, безусловно, есть место для переноса, которое займет больше времени, чем стандартные 30-е, выделенные до истечения времени ожидания сценария.Если это произойдет, я предполагаю, что файл будет просто обрезан как частично переданный.Есть ли способ защиты от этого?

Обратите внимание, что я работаю в среде общего хостинга, поэтому редактирование файла php.ini не вариант.

Ответы [ 3 ]

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

Если он включен, вы можете вызвать set_time_limit () . Кроме того, если вы запускаете php из командной строки (через cron или аналогичный), максимальное время выполнения не применяется.

0 голосов
/ 18 июля 2010

Согласно set_time_limit () , это никогда не должно быть проблемой, поскольку время, потраченное на выполнение действий вне сценария, не учитывается при расчете времени выполнения сценария для проблем с тайм-аутом.

0 голосов
/ 18 июля 2010

Можете ли вы попробовать запустить задание ftp через оболочку? Может работать на общем хосте ...

shell_exec('nohup ftp my-ftp-command 2> /dev/null');
...