我知道每次运行php脚本(秒或分钟)我们都可以使用Cron(作业或标签),但cron的粒度为60秒,所以我们不得不有一个无限循环来运行php脚本。例如,我们可以编写下面的代码在脚本的顶部调用它:
#!/bin/bash
while [ true ]; do
#put php script here
done
但这是不合逻辑的,因为我们必须在php.ini中更改php执行时间,所以我们在服务器中有很多问题(安全性,溢出,......)。那么,我们应该做些什么呢? 我的问题是如何在PHP执行时间内每5秒运行一次php脚本。
答案 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不能一直重启......