Sai*_*han 14 php cron time loops command-line-interface
我有一个运行Cent OS的专用服务器,带有Parallel PLESK面板.我需要每秒运行一个PHP脚本来更新我的数据库.这些在时间上是无可替代的方式,它需要每秒更新一次.
我可以使用URL找到我的脚本http://www.somesite.com/phpfile.php?key=123
.
文件可以每秒在本地执行吗?喜欢phpfile.php
?
更新:
我加上这个问题已经有几个月了.我最终使用以下代码:
#!/user/bin/php
<?php
$start = microtime(true);
set_time_limit(60);
for ($i = 0; $i < 59; ++$i) {
doMyThings();
time_sleep_until($start + $i + 1);
}
?>
Run Code Online (Sandbox Code Playgroud)
我的cronjob设置为每分钟.我已经在测试环境中运行了一段时间,并且它运行良好.它真的超级快,我看到CPU和内存使用没有增加.
nic*_*ckf 27
你实际上可以用PHP来做.编写一个将运行59秒的程序,每秒执行一次检查,然后终止.将它与一个cron作业结合起来,每分钟运行一次这个过程,然后嘿嘿.
一种方法是:
set_time_limit(60);
for ($i = 0; $i < 59; ++$i) {
doMyThings();
sleep(1);
}
Run Code Online (Sandbox Code Playgroud)
您唯一需要注意的是功能的运行时间doMyThings()
.即使这只是一小部分,然后超过60次迭代,这可能会导致一些问题.如果您运行PHP> = 5.1(或Windows上的> = 5.3),那么您可以使用time_sleep_until()
$start = microtime(true);
set_time_limit(60);
for ($i = 0; $i < 59; ++$i) {
doMyThings();
time_sleep_until($start + $i + 1);
}
Run Code Online (Sandbox Code Playgroud)
Mil*_*kov 23
你有没有考虑过使用"手表"?
watch -n 1 /path/to/phpfile.php
Run Code Online (Sandbox Code Playgroud)
只需启动一次它就会继续下去.这样它就可以免受PHP崩溃的影响(不是它发生了,但你永远都不知道).您甚至可以添加此inittab以使其完全防弹.