У меня есть приложение php, которое вызывает класс Client. Каждый раз так часто я получаю ошибку времени. Сначала я подумал, что это SQL, но он обращается к самому классу.
Неустранимая ошибка: максимальное время выполнения 30 секунд превышено в C: \ Program Files (x86) \ Apache Software Foundation \ Apache2.2 \ htdocs \ ClientPortal \ classes \ Connections.php в строке 3
<?php session_start(); class Connections { //line 3
Кто-нибудь знает, что здесь происходит?
благодаря,
Билли
PHP-скрипты имеют максимальное время, за которое им разрешено выполнять, как указано в php.ini.
Вы можете обойти это, если хотите, добавив следующую строку:
ini_set('max_execution_time', 123456);
где 123456 – это количество секунд, в течение которых вы хотите, чтобы предел был.
Вы также можете использовать функцию set_time_limit , о которой я только что узнал и предполагаю, делает то же самое. Однако я всегда делал первое.
Вы можете изменить его в файле php.ini, но вы можете использовать свой скрипт для выполнения пакетной операции или чего-то еще. Вы бы не хотели, чтобы скрипт PHP, к которому обращается конечный пользователь, сидел там, висящий в течение 30 секунд и более, поэтому вам лучше оставить его по умолчанию или даже отключить его в файле php.ini, и устанавливая max_execution_time по мере необходимости.
Как видно в комментарии ниже, вы можете установить max_execution_time равным 0, чтобы остановить ошибку от когда-либо происходящего, но видоискатель прав, чтобы сказать, что, по крайней мере, для веб-запроса, вы действительно не должны этого делать. Для интерпретатора командной строки php это поведение по умолчанию.
Если вы видите эту проблему для вещей, которые, как предполагается, будут использоваться конечными пользователями через веб-запрос, вам, возможно, придется сделать некоторые профилирования, чтобы разобраться в реальной причине. Если вы выполняете MySQL-запросы, начните с включения медленного журнала запросов . Особенно полезно сообщить, когда вы забыли индекс, или если вы делаете что-то еще неэффективное.
Вы также можете засунуть несколько $s = microtime(true); yourstuff(); var_dump(microtime(true)-$s);
$s = microtime(true); yourstuff(); var_dump(microtime(true)-$s);
все вокруг, чтобы получить смутный обзор того, какие биты замедляют работу, просто убедитесь, что вы не оставите никого из них в дальнейшем!
Если вы все еще пытаетесь найти первопричину, установите xdebug на свою локальную машину и запустите профайлер. Расширение доступно в виде предварительно скомпилированного двоичного файла Windows (хотя, похоже, запутанный массив версий). Вы можете проверить результаты запуска профилировщика с помощью wincachegrind .