Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Shell脚本每5秒运行一次PHP文件_Php_Shell_Sh - Fatal编程技术网

使用Shell脚本每5秒运行一次PHP文件

使用Shell脚本每5秒运行一次PHP文件,php,shell,sh,Php,Shell,Sh,我想使用Shell脚本每隔5秒运行一个php文件。但有时脚本每秒运行一次,有时停止运行。我也需要使用crontab吗?请帮忙 #!/bin/bash while true; do begin=`date +%s` php /home/user/www/run.php end=`date +%s` if [ $(($end - $begin)) -lt 5 ]; then sleep $(($begin + 5 - $end)) fi don

我想使用Shell脚本每隔5秒运行一个php文件。但有时脚本每秒运行一次,有时停止运行。我也需要使用crontab吗?请帮忙

#!/bin/bash
while true; do
    begin=`date +%s`
    php /home/user/www/run.php
    end=`date +%s`
    if [ $(($end - $begin)) -lt 5 ]; then
        sleep $(($begin + 5 - $end))
    fi
done

最好的办法是配置crontab以保持执行或另一个程序作为服务安装

contrab的问题是,最低执行时间是每1分钟。因此,您应该创建一个脚本,该脚本每5秒执行一次,但不超过12次。(12 x 5秒=60秒)

终止进程并使用crontab重新运行它

例子
sript.sh

#/bin/bash
#不要运行12次,因为这将与下一个crontab执行的时间相同
我在123456789911
做
php/home/user/www/run.php
睡眠5
完成
在crontab上

***/path/to/script.sh

最好是配置crontab以保持执行或另一个程序作为服务安装

contrab的问题是,最低执行时间是每1分钟。因此,您应该创建一个脚本,该脚本每5秒执行一次,但不超过12次。(12 x 5秒=60秒)

终止进程并使用crontab重新运行它

例子
sript.sh

#/bin/bash
#不要运行12次,因为这将与下一个crontab执行的时间相同
我在123456789911
做
php/home/user/www/run.php
睡眠5
完成
在crontab上

***/path/to/script.sh
试试这个:

#/bin/bash
虽然真实;做
睡眠5&
php/home/user/www/run.php&
等待
完成
wait
(不带参数)等待所有后台作业完成,因此循环将阻塞,直到较长的睡眠和php进程完成


展示

rand(){echo$((随机%$1));}
对于{1..10}中的i;做
开始=$s
r=$(兰特10)
echo“迭代$i,休眠$r秒”
睡眠$r
结束=$秒
如果((结束-开始<5));然后
n=$((5-(结束-开始)))
echo“睡眠$n秒”
睡眠$n
fi
完成
#或者更简单地分配给秒
对于{1..10}中的i;做
秒=0
r=$(兰特10)
echo“迭代$i,休眠$r秒”
睡眠$r
持续时间=$s
如果((持续时间<5));然后
n=$((5-持续时间))
echo“睡眠$n秒”
睡眠$n
fi
完成
当然比使用
等待更复杂

尝试以下方法:

#/bin/bash
虽然真实;做
睡眠5&
php/home/user/www/run.php&
等待
完成
wait
(不带参数)等待所有后台作业完成,因此循环将阻塞,直到较长的睡眠和php进程完成


展示

rand(){echo$((随机%$1));}
对于{1..10}中的i;做
开始=$s
r=$(兰特10)
echo“迭代$i,休眠$r秒”
睡眠$r
结束=$秒
如果((结束-开始<5));然后
n=$((5-(结束-开始)))
echo“睡眠$n秒”
睡眠$n
fi
完成
#或者更简单地分配给秒
对于{1..10}中的i;做
秒=0
r=$(兰特10)
echo“迭代$i,休眠$r秒”
睡眠$r
持续时间=$s
如果((持续时间<5));然后
n=$((5-持续时间))
echo“睡眠$n秒”
睡眠$n
fi
完成

当然比使用
wait

更复杂,在我的理解中,linux cron可以在几分钟、几小时、几天、几个月内运行,但是
不能在几秒钟内运行。您应该使用shell脚本和
nohup
在后台运行它据我所知,linux cron可以在几分钟、几小时、几天、几个月内运行,但
不能在几秒钟内运行。您应该使用shell脚本和
nohup
在后台运行它,您能给我一个例子吗?您能给我一个例子吗?另外,在bash中,使用内置的
$SECONDS
变量,而不是调用
date
,此时您需要做的就是跟踪持续时间。您能显示吗?另外,在bash中,使用内置的
$SECONDS
变量,而不是调用
date
,此时您需要做的就是跟踪持续时间。您能显示这一点吗?