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

标签 php loops time cron command-line-interface

我有一台运行 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/

相关文章:

python-闹钟建议

php - 使用 PHP 从数据库中获取图像

php - 只选择 Javascript 中的一些复选框

javascript - 类函数中 php 的轻松迭代

mysql - 迭代内的数字总和 - Rails

java - 使用 Intellij IDEA 在 For 循环中未初始化循环变量

php - Safari 上的 facebook iframe 跨域 cookie 问题

php - 如何在不阻塞线程的情况下调用 PHP?

php - 使用 PHP 将日期和时间保存到 MySQL 时遇到问题

java - 减去 System.currentTimeMillis() 得到零