Ответ 1
PHP-скрипты имеют максимальное время, за которое им разрешено выполнять, как указано в php.ini.
Вы можете обойти это, если хотите, добавив следующую строку:
ini_set('max_execution_time', 123456);
где 123456 - это количество секунд, в течение которых вы хотите, чтобы предел был.
Вы также можете использовать функцию set_time_limit, о которой я только что узнал и предполагаю, делает то же самое. Я всегда делал первое.
Вы можете изменить его в файле php.ini, но вы можете использовать script для выполнения пакетной операции или чего-то еще. Вы бы не захотели, чтобы на PHP скрипт, к которому обращается конечный пользователь, чтобы сидеть там, висящий в течение 30 секунд и более, поэтому, вам лучше оставить его по умолчанию или даже отключить его в php.ini файл и установить max_execution_time по мере необходимости.
Как видно в комментариях ниже, вы можете установить max_execution_time равным 0, чтобы остановить ошибку, когда-либо происходящее, но визитная карточка права сказать, что, по крайней мере, для веб-запроса, вы действительно не должны этого делать. Для интерпретатора командной строки php это поведение по умолчанию.
Если вы видите эту проблему для вещей, которые, как предполагается, будут использоваться конечными пользователями через веб-запрос, вам, возможно, придется сделать некоторые профилирования, чтобы разобраться в реальной причине. Если вы выполняете MySQL-запросы, начните с включения медленного журнала запросов. Особенно полезно сообщить, когда вы забыли индекс, или если вы делаете что-то еще неэффективное.
Вы также можете засунуть несколько вещей $s = microtime(true); yourstuff(); var_dump(microtime(true)-$s);
, чтобы получить смутный обзор того, какие биты замедляют работу, просто убедитесь, что вы не оставите их в дальнейшем!
Если вы все еще пытаетесь найти основную причину, установите xdebug на свой локальный компьютер и запустите профайлер. Расширение доступно в виде предварительно скомпилированного двоичного файла Windows (хотя, похоже, запутанный массив версий). Вы можете проверить результаты запуска профилировщика, используя wincachegrind.