У меня возникла странная проблема в Debian 9 с PHP 7.1.13. У нас есть несколько настроек PHP-скриптов для запуска через crontab с различными интервалами от 1 до 15 минут.
В большинстве случаев они работают нормально и успешно завершаются, однако иногда они не завершаются и остаются в памяти. Сейчас там 781, и я убрал их около 48 часов назад.
Идентичная система, работающая на Ubuntu 14.04, не имеет этой проблемы (работает на php 5.6). Я также видел проблему на своей машине разработки, на которой работает Ubuntu 17.10 и php 7, хотя я думал, что она связана с XDebug, который запускается на моей машине разработчика.
Кто-нибудь испытывал подобные проблемы с фоновыми задачами PHP7? Достаточно легко обойти это и написать сторожевой скрипт, который убивает их через установленный период, но я бы предпочел исправить проблему, а не симптом.
TIA.
На случай, если кому-то еще интересно, я так и не разобрался в этом, и в итоге просто (с небольшим толчком друга) придумал этот сценарий оболочки, который я просто периодически запускаю.
ps aexo etimes,pid,command | grep php | grep -v "pubsub" | awk '{if ($1 >= 3600) print $2}' | while read pid; do kill $pid; done
Бит grep -v "pubsub" предназначен только для того, чтобы я не убивал сервер pubsub, который вполне законно может работать в течение нескольких дней / недель без проблем. Вы можете удалить это, если у вас нет процессов для исключения
Обратите внимание, что аргумент etimes для ps не будет работать в некоторых старых дистрибутивах, если он не получит время, прошедшее с момента запуска, в секундах.