php - 为什么连续运行 PHP 脚本如此糟糕?

标签 php command-line cron infinite-loop

我有一张 map 。在这张 map 上,我想显示从几个表中收集的实时数据,其中一些表的行数惊人。不用说,获取此信息需要很长的时间。此外,还涉及 ping。根据离线或远离服务器的情况,此数据的收集可能需要 1 到 10 分钟不等。

我希望 map 快速且响应迅速,因此我决定向我的数据库中添加一个新表,其中仅包含 map 所需的数据。这意味着我需要一个后台进程来不断更新我的新表中的信息。 Cron 作业当然是可能的,但我希望在前一个间隔完成后立即刷新数据。如果离线 IP 地址的数量突然激增并且循环运行时间比 Cron 作业的间隔时间长怎么办?

我自己的解决方案是在 PHP 中创建一个由命令行运行的无限循环。这个循环会将 map 的数据刷新到 MySQL 中,并记录其他有用的数据,例如循环时间和 ping 尝试失败等,然后在短暂的暂停(几秒钟)后重新启动。

但是 - 人们反复告诉我,永远运行的 PHP 脚本是不好的。一段时间后,它将占用 GB 的 RAM(以及其他可怕的东西)

我写这个问题的部分原因是为了确认事实是否如此,但是关于如何编写一个不会泄漏内存(如果可能的话)的干净循环的一些提示和技巧不会走错了。对此事的意见也将不胜感激。

我认为我将标记为正确的问题最能说明问题的答复。

最佳答案

循环应该在一个脚本中,它将激活/调用实际脚本作为一个不同的进程......很像 cron 正在做的。
这样,即使内存泄漏,并且未收集的内存正在累积,它也会/应该在每个周期后释放。

关于php - 为什么连续运行 PHP 脚本如此糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372119/

相关文章:

perl - 由cron仅运行一个Perl脚本实例

linux - 每天使用 cron 运行脚本并创建压缩日志文件

spring - Quartz cron 表达式 - 每个月的最后一个星期四

macos - Excel vlookup 之类的命令行函数或工具?

windows - 用于找出谁在锁定文件的命令行工具

php - 根据关联数组的值对键进行排名(函数错误)

php - 如何在 PHP 命令 (CLI) 中传递 bash 脚本变量值

android - 为什么 "cocos compile -p android"给出 "The android command is no longer available."错误

php - paytm 在核心 php 中的集成

php - 从多个文件夹中批量插入图像(文件夹中包含图像)将不起作用