我知道每次(秒或分钟)运行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 不必一直重新启动......