每 5 秒运行一次 PHP 脚本


run php script every 5 seconds

我知道每次(秒或分钟)运行php脚本,我们可以使用Cron(作业或选项卡),但是cron具有60秒的粒度,因此我们被迫有一个无限循环来运行php脚本。例如,我们可以编写下面的代码在脚本顶部调用它:

#!/bin/bash
while [ true ]; do   
   #put php script here
done

但这是不合逻辑的,因为我们必须在 PHP 中更改 PHP 执行时间.ini所以我们在服务器中有很多问题(安全性、溢出、...)。 那么,我们到底应该怎么做?我的问题是如何每 5 秒运行一次 php 脚本,在 php 执行时间中没有问题。

使用 Cron 作业脚本。获取 30 秒间隔,您可以延迟 5 秒:

-*/5-22 * * * sleep 5;your_script.php

上面的脚本将在上午 5 点到晚上 10 点运行

另一种选择是,

You need to write a shell script like this that sleeps on the specified interval and schedule that to run every minute in cron:
#!/bin/sh
# Script: delay_cmd
sleep $1
shift
$*

然后安排它使用你的参数在 cron 中运行: delay_cmd 5 个 mycommand 参数

 #!/bin/sh
 #
 SNOOZE=5
 COMMAND="/usr/bin/php /path/to/your/script.php"
 LOG=/var/log/httpd/script_log.log
 echo `date` "starting..." >> ${LOG} 2>&1
 while true
 do
  ${COMMAND} >> ${LOG} 2>&1
  echo `date` "sleeping..." >> ${LOG} 2>&1
  sleep ${SNOOZE}
 done

上述脚本将以第二个间隔运行。它不会在仍在处理时运行PHP脚本,还会报告日志文件中的交互/错误。

如何使用睡眠功能每 5 秒延迟一次

怎么样

int sleep ( int $seconds ) - 将程序执行延迟给定的秒数。

我更喜欢在你的PHP中使用睡眠

    while( true ) {
        // function();
        sleep( 5 );
    }

您可以在 1 分钟或类似时间后停止它,然后使用 cronjob 重新启动它。使用此解决方案,您可以在上次执行后每秒执行脚本,并且它不会异步工作。

您可以使用该解决方案节省资源,因为 php 不必一直重新启动......