【问题标题】:Bash script to automatically re-run PHP file?Bash脚本自动重新运行PHP文件?
【发布时间】:2020-05-23 23:50:56
【问题描述】:

我可以创建一个 bash 脚本,以 3 秒的延迟反复运行 PHP 文件,如下所示:

php -q /home/script.php
sleep 3
php -q /home/script.php
sleep 3
php -q /home/script.php

但我正在寻找一种更好的方法来执行此操作,因此我不必创建一个包含数十万行的文件然后检查它何时完成,这样我就可以重新启动它。

有没有办法创建一个循环来运行 PHP 文件,一旦完成,它就会再次执行 - 无限长的时间(每次运行之间有 3 秒的延迟)?

【问题讨论】:

  • 我很好奇需要经常运行什么任务。有可能更喜欢根据事件发生采取行动,而不是每 3 秒检查一次以查看该事件是否发生。

标签: php linux bash shell ubuntu


【解决方案1】:

使用 Cronjob

什么是 Cron 作业? https://www.hostgator.com/help/article/what-are-cron-jobs

cron 作业本身就是计划任务。 Cron 作业对于自动执行重复性任务非常有用。

一些对 cronjobs 有用的工具:https://crontab.guru/

示例:“每 1 分钟运行一次脚本”

*/1 * * * * bin/php /path/to-your/script.php

循环

如果您确实需要每 X 秒重复一次任务,您可以为此编写一个 while 循环:

#!/bin/bash
while true; do
  # Do something
  sleep 3;
done

【讨论】:

  • 确实如此。如果你想“几秒钟”,我会做一个while循环,里面有一些睡眠......但在X分钟后重复某些任务更常见,超过X秒......
  • 是的,但是 OP 想要秒,所以 cron 在这里似乎不是一个好选择。
  • 我编辑了我的答案以显示到目前为止我想到的两个选项。
【解决方案2】:

你可以考虑写一个while循环:

while true
do
  php -q /home/script.php
  sleep 3 
done

【讨论】:

  • 我绝对更喜欢 cron 作为解决方案,但您会发现 cron 只有微小的分辨率。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 2012-07-04
  • 2017-11-04
  • 1970-01-01
  • 2012-03-29
  • 2012-06-18
  • 2015-07-05
相关资源
最近更新 更多