我在 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 后台任务类似的问题?解决这个问题很容易,只需编写一个监视脚本,在一定时间后将其终止,但我宁愿修复问题,而不是症状。
短暂性脑缺血。
答案1
如果有人想知道的话,我从来没有弄清楚过这个问题,最后只是(在朋友的一点点推动下)想出了这个我只是定期运行的 shell 脚本。
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 服务器,该服务器可以连续运行数天/数周而不会出现问题。如果您没有任何要排除的进程,则可以删除它
请注意,ps 的 etimes 参数在某些较旧的发行版上不起作用,因为它很难获取自启动以来经过的时间(以秒为单位)。