【问题标题】:Execute php script Sequentially and Continuously按顺序连续执行php脚本
【发布时间】:2012-11-23 10:08:35
【问题描述】:

我开发了一个脚本,它应该连续和顺序执行。现在在为这个脚本创建一个 cron 作业时,它会一直异步执行。

1) 我在脚本中保留了一个 while 循环,并考虑执行一次此脚本,所以我使用 @reboot 执行一次脚本,但如果 apache 崩溃,那么此脚本将不会自行开始执行??

2) 使用 * * * * * cron 它会执行这个脚本,但会创建多线程,并且所有 cron 最终都会在服务器上重叠。

即使 apache 服务器重新启动,我也想不出如何连续顺序地执行服务器脚本。

【问题讨论】:

  • 您可以创建一个“锁定”文件吗?这意味着,当您的脚本启动时,它会检查该文件是否存在。如果文件存在,则脚本不会继续。否则它将在启动脚本时创建文件并在完成后删除文件。只是一个想法。
  • 如果您让脚本通过数据库与自己对话会怎样。 IE 经常更新一个单元格,因此如果您的下一个进程尝试运行,它会意识到您的脚本已经在运行并停止。此外,如果脚本运行并且在该单元格的最后一次更新之间有超过几秒钟的时间,那么它会知道继续
  • 所以我假设您建议我使用诸如套接字或彗星技术之类的东西来侦听数据库...我们用于推送通知...对吗?那么它是否会无限期地执行脚本,即使 apache 重新启动?

标签: php linux apache cron


【解决方案1】:

你要求:

一个应该连续和顺序执行的脚本

这就是守护进程的定义。您可以使用upstart 轻松地使用您的 php 代码创建一个守护进程。

在这里你可以找到一篇很好的文章来解释如何用 upstart 和 node.js 创建一个守护进程(但是很容易适应一个 php 脚本):http://kvz.io/blog/2009/12/15/run-nodejs-as-a-service-on-ubuntu-karmic/

【讨论】:

    【解决方案2】:

    有一些想法可以处理检查脚本是否在 this question 中运行,您可以每隔几分钟运行一次 cron 以确保其运行并在没有运行时启动它。

    【讨论】:

      【解决方案3】:

      cron 用于定时重复作业(最小间隔:1 分钟)。它适用于最终退出并需要从头开始重新启动的脚本。听起来你的脚本本质上是想成为一个守护进程——启动一次,然后永久运行。

      代替 cron 重复启动脚本的新副本,只需通过 init 脚本启动您的脚本一次,例如/etc/rc.local

      【讨论】:

      • 但是如果 apache 崩溃了怎么办?它会自己开始吗?每次 apache 重新启动时,我都不会手动执行....
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2012-01-29
      • 2015-09-12
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多