我有一台运行 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 设置为每分钟一次。我已经在测试环境中运行了一段时间,效果很好。它真的 super 快,我看不到 CPU 和内存使用量的增加。
最佳答案
您实际上可以用 PHP 来完成。编写一个运行 59 秒的程序,每秒进行一次检查,然后终止。将其与每分钟运行 那个 进程的 cron 作业结合起来,嘿 presto。
一种方法是这样的:
set_time_limit(60);
for ($i = 0; $i < 59; ++$i) {
doMyThings();
sleep(1);
}
您可能唯一需要注意的是 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);
}
关于php - 使用 CLI 每秒运行一个 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726116/