2013-06-30 2 views
0

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

второй вопрос к этой теме:
Что произойдет, если сценарий будет прерван после того, как функции FWRITE() без выполнения fclose() - это может привести создать не полный файл (недопустимый) на диске?

3-й вопрос
Если скрипт не прекращается немедленно, то он прекращается после окончания текущей инструкции или вызова функции? Потому что, если сценарий заканчивается после текущей инструкции, выполнение fwrite() не может дойти до конца этой функции и остановиться где-то внутри тела функции., если PHP-скрипт достигает максимально допустимого времени выполнения, прекращается ли оно немедленно или сразу после завершения текущей инструкции?

ответ

0

Максимальное время выполнения не зависит от системных вызовов, поток операций и т.д.

Ваш веб-сервер может иметь другие конфигурации тайм-аута, которые также могут прерывания выполнения PHP. У Apache есть директива Timeout, и IIS имеет функцию тайм-аута CGI . Оба по умолчанию - 300 секунд. Для получения подробной информации обратитесь к вашему веб-серверу .

см PHP manual: Runtime configuration Из того, что я делаю вывод, что FWRITE вызов будет правильно выполняться до конца. Сервер (например, apache) также может заставить сценарий остановиться. В этом случае fwrite может быть перепутан. Но по мере того как оно 300 по умолчанию вы propably не бежите в этот таймаут.

0

Немедленно прекращается.

Ваш ответ на второй вопрос: Нет, fclose() не требуется.