我有 cron 作业 - php 脚本,它在 5 分钟内调用一次。我需要确保之前调用的 php 脚本已完成执行 - 不想混合正在处理的数据。
我曾经应用过三种方法:
创建包含运行状态标志的辅助文本文件。执行的脚本分析文件的内容并在标志设置为 true 时中断。这是最简单的解决方案,但每次我创建这样的脚本时,我都觉得我又发明了一辆自行车。是否有任何众所周知的模式或最佳实践可以满足大多数需求?
添加 UNIX 服务。这种方法最适合 cron 作业。但开发和测试 UNIX 服务更耗时:需要良好的 bash 脚本知识。
使用数据库跟踪流程。很好的解决方案,但有时不鼓励使用数据库 - 不想发明自行车,希望已经有一个很好的灵活解决方案。
也许您对如何管理 php 脚本的单一处理有其他建议?很高兴听到您对此的看法。
最佳答案
我建议使用文件锁定机制。您创建一个文本文件,并让您的进程独占锁定它(请参阅 php flock 函数:http://us3.php.net/flock)。如果锁定失败,则退出,因为有另一个实例正在运行。 使用文件锁定的好处是,如果您的 PHP 脚本意外终止或被杀死,它会自动释放锁定。如果您使用纯文本文件作为状态,则不会发生这种情况(如果脚本设置为在执行结束时更新此文件并且它意外终止,您将留下不真实的数据)。
关于php - 如何实现单处理模式运行php脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496855/