使用 CLI 每秒运行一个 PHP 脚本

2022-08-30 23:58:06

我有一个运行Cent OS的专用服务器,带有并行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);
}
?>

我的 cronjob 设置为每分钟。我已经在测试环境中运行了一段时间,它工作得很好。它真的超级快,我没有看到CPU和内存使用量的增加。


答案 1

你实际上可以用PHP来做。编写一个将运行59秒的程序,每秒执行一次检查,然后终止。将其与cron作业相结合,该作业每分钟运行一次该进程,嘿,presto。

一种方法是这样的:

set_time_limit(60);
for ($i = 0; $i < 59; ++$i) {
    doMyThings();
    sleep(1);
}

您可能唯一需要注意的是函数的运行时间。即使这是几分之一秒,那么超过60次迭代,这可能会导致一些问题。如果你运行的 PHP >= 5.1(或在 Windows 上>= 5.3),那么你可以使用 time_sleep_until()doMyThings()

$start = microtime(true);
set_time_limit(60);
for ($i = 0; $i < 59; ++$i) {
    doMyThings();
    time_sleep_until($start + $i + 1);
}

答案 2

你有没有想过使用“手表”?

watch -n 1 /path/to/phpfile.php

只需启动一次,它就会继续前进。通过这种方式,它不受PHP崩溃的影响(不是说它发生了,但你永远不会知道)。您甚至可以添加此初始化选项卡以使其完全防弹。


推荐