【发布时间】:2011-08-18 10:20:01
【问题描述】:
我想在 php 中定义一个全局范围内的变量。每个用户都应该可以访问该变量,因此它不应该依赖于会话。
我想做类似以下的事情:我有一个 php 脚本,该脚本通常需要大约 5 到 15 分钟才能执行,但在某些特殊情况下可能需要一个多小时。此脚本正在使用间隔 15 分钟的 cron 作业运行。该脚本也可以由任何用户手动运行。
现在可以同时运行任意数量的脚本。我想限制这个脚本数量。
所以,我想要一个变量来存储当前正在执行的脚本的数量。我不想使用数据库或文件来存储单个值。
提前致谢。
【问题讨论】:
-
我不想使用数据库或文件,因为有一个缺点。假设我想运行最多 5 个实例,当前有 4 个实例正在运行,我将此值保存到 db。突然,我的服务器由于某种原因宕机了。当它再次启动时,db会显示有实例正在运行,但实际上不会有实例......
-
PHP 会话存储在纯文件中。除非您的会话在服务器重新启动时被清除,否则全局会话也会出现同样的问题。您还有许多其他边缘情况。如果进程在递减计数器之前就崩溃了怎么办?一旦 5 个实例在中途崩溃,您最终将陷入僵局。如果您对跟踪正在运行的进程数量感兴趣,您实际上需要能够查询以查看正在运行的进程数量。