set_time_limit () истекло время ожидания - PullRequest
4 голосов
/ 05 февраля 2010

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

Но в любом случае первая строка кода - set_time_limit(0);, которая исправила это для НЕКОТОРЫХ пользователей, у которых были подключения, для загрузки которых требовалось некоторое время, но у некоторых все еще истекает время ожидания, и я не знаю почему.

В нем указано, что выполнение сценария превысило ограничение 60 секунд. В скрипте нет циклов, поэтому он не похож на бесконечный цикл.

Странно то, что независимо от того, какая строка кода находится в первой строке, она всегда будет говорить «ошибка в первой, второй строке и т. Д.», Даже если это set_time_limit(0);. Я попытался стереть его, и самая первая строка кода всегда кажется ошибкой, она даже не дает понять, почему он не может выполнить страницу php.

Это проблема, с которой сталкиваются лишь немногие пользователи, и, похоже, никто не затрагивается. Может ли кто-нибудь подсказать, почему это может происходить?

Ответы [ 3 ]

6 голосов
/ 05 февраля 2010

set_time_limt () будет влиять только на фактическое выполнение кода PHP на странице.Вы хотите установить директиву PHP max_input_time, которая контролирует, как долго скрипт будет принимать ввод (например, файлы).Суть в том, что вам нужно установить это в php.ini, так как если превышено значение max_input_time по умолчанию, оно никогда не достигнет сценария, который пытается изменить его с помощью ini_set ().

1 голос
/ 05 февраля 2010

Конечно, пара вещей, отмеченных в руководстве по PHP.

Убедитесь, что PHP не работает в безопасном режиме. set_time_limit не влияет, когда PHP работает в safe_mode.

Во-вторых, и здесь я предполагаю, что ваша проблема заключается ..... Примечание. Функция set_time_limit () и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, потраченное на действия, которые происходят вне выполнения сценария, такие как системные вызовы с использованием system (), потоковые операции, запросы к базе данных и т. Д., Не учитывается при определении максимального времени выполнения сценария. Это не так в Windows, где измеренное время реально.

Так что ваш поток может быть виновником.

Можете ли вы опубликовать немного своего сценария загрузки, вы вызываете отдельный файл для обработки загрузки с использованием заголовков?

0 голосов
/ 25 июля 2013

Попробуйте ini_set('max_execution_time', 0); вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...