Почему наши PHP-скрипты перестают анализировать средний скрипт?

Недавно мы обновили наш сервер с PHP версии 5.6 до PHP 7.4, после этого обновления мы столкнулись с очень странным поведением некоторых скриптов.

Сами сценарии полностью совместимы с PHP 7, нет никаких журналов ошибок или чего-то еще, что когда-либо печаталось или даже регистрировалось при возникновении проблемы.

Происходит следующее:

Сценарий запускается, этот сценарий вызывает несколько функций, когда 1 функция просто занимает слишком много времени для завершения, тогда основной сценарий останавливается, нет ошибки или вывода, что указывает на то, что что-то не так или пошло не так.

Неважно, запускаем ли мы этот скрипт через графический интерфейс или через CLI, в обоих случаях результат будет одинаковым.

Сценарий останавливается / ломается (на cli вы возвращаетесь к подсказке) каждый раз, когда вызываемая функция (неважно, какая функция) просто занимает слишком много времени для завершения, как уже упоминалось, причина НЕ является ошибкой кода php, код действителен.

Когда тот же скрипт запускается с использованием php 5.6, скрипт продолжает ждать, пока вызываемая функция не завершится, а затем обычно продолжается, как и предполагалось.

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

Кто-нибудь знает, где искать или искать такие настройки?

Система работает на Centos 8 и использует PHP 7.4.13 (или php 5.6), при использовании более старой версии PHP (7.2) проблема такая же, только на php 5.6 вообще нет этой проблемы.


person Kevin    schedule 05.01.2021    source источник
comment
Вы заявили, что запускаете это из CLI, AFAIK при запуске скрипта из CLI max_execution_time устанавливается на 0, что означает, что скрипт не должен прекращать выполнение, если он не завершен или явно не отменен, например. Ctrl+C, так что я не думаю, что время ожидания скрипта истекло, вы включили отчеты об ошибках? stackoverflow .com/questions/845021/   -  person RJK    schedule 05.01.2021
comment
Проверьте, включены ли отчеты об ошибках. Посмотрите логи, а также вывод терминала   -  person RiggsFolly    schedule 05.01.2021
comment
когда 1 функция просто требует слишком много времени для завершения Откуда вы знаете, что проблема связана с продолжительностью времени выполнения, если вы не видели что-то, что говорит вам об этом   -  person RiggsFolly    schedule 05.01.2021
comment
Увеличьте или удалите лимит времени.   -  person Markus Zeller    schedule 05.01.2021
comment
Проверьте системный журнал, чтобы узнать, завершила ли операционная система процесс (например, из-за нехватки памяти).   -  person obe    schedule 05.01.2021
comment
Вы могли бы показать нам >php -i   -  person RiggsFolly    schedule 05.01.2021
comment
Кроме того, если у вас включен Zend OPCache, попробуйте отключить его и посмотреть, будет ли это иметь значение (в php.ini - ищите opcache.enable). Обратите внимание, что обычно используется два отдельных файла php.ini для веб-сайта и для интерфейса командной строки, поэтому вам может потребоваться проверить оба.   -  person obe    schedule 05.01.2021
comment
Отчеты об ошибках включены, никаких ошибок не регистрируется. Если мы запустим скрипт на PHP 7.4. Скрипт останавливается из CLI через короткий промежуток времени (1-2 минуты). При запуске того же скрипта на PHP 5.6 он выполняется долго (что и должно быть в данном случае). Наши разработчики обнаружили, что функция, которая вызывает другую функцию для проверки существования учетной записи электронной почты (проверка HELO), занимает больше 2-3 секунд, весь скрипт PHP останавливается в версии 7.4, тогда как PHP 5.6 просто ждет дольше и запускает весь скрипт.   -  person Kevin    schedule 05.01.2021


Ответы (1)


Отчеты об ошибках включены, никаких ошибок не регистрируется. Если мы запустим скрипт на PHP 7.4. Скрипт останавливается из CLI через короткий промежуток времени (1-2 минуты). При запуске того же скрипта на PHP 5.6 он выполняется долго (что и должно быть в данном случае). Наши разработчики обнаружили, что функция, которая вызывает другую функцию для проверки существования учетной записи электронной почты (проверка HELO), занимает больше 2-3 секунд, весь PHP-скрипт останавливается в 7.4, где PHP 5.6 просто ждет дольше и запускает весь скрипт

person Kevin    schedule 06.01.2021