每5秒运行一次php脚本

时间:2015-01-12 08:54:29

标签: php shell cron crontab

我知道每次运行php脚本(秒或分钟)我们都可以使用Cron(作业或标签),但cron的粒度为60秒,所以我们不得不有一个无限循环来运行php脚本。例如,我们可以编写下面的代码在脚本的顶部调用它:

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

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

4 个答案:

答案 0 :(得分:4)

使用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 parameters

答案 1 :(得分:2)

 #!/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脚本,也会报告日志文件中的交互/错误。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我更喜欢在PHP中使用sleep

    while( true ) {

        // function();

        sleep( 5 );

    }

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

使用该解决方案保存资源,因为php不能一直重启......