【问题标题】:run php script exactly every 2 second恰好每 2 秒运行一次 php 脚本
【发布时间】:2018-03-06 04:25:14
【问题描述】:

我有一个 php 文件,我想每 2 秒运行 1 分钟。因为在我的服务器中,我只能将 min cron 设置为 1 分钟。所以我做了这个脚本。

<?php
$start = microtime(true);
set_time_limit(60);
for ($i = 0; $i < 59; ++$i) {
    shell_exec('/usr/local/bin/php /usr/local/www/my_file.php');
    time_sleep_until($start + $i + 2);
}
?>

第二个选项是。

<?php
for ($i = 0; $i <= 59; $i+=2) {
    shell_exec('/usr/local/bin/php /usr/local/www/my_file.php');
    sleep(2);
}
?>

但它们都不起作用,因为我的脚本执行时间是 50 到 60 秒。因此,它不是每 2 秒运行一次,而是每 50 到 60 秒运行一次。那么,是否有任何解决方案可以每 2 秒开始执行新的脚本?我不知道请帮帮我。

【问题讨论】:

  • 试过cronjobs ?
  • 如果脚本需要 50 秒才能完成,那么每 2 秒执行一次是没有意义的。你只会给自己带来并发、数据访问、不一致记录等方面的问题。
  • @chade_ 试过了,但我可以将最小 cron 设置为 1 分钟...不是每 2 秒一次。

标签: php cron


【解决方案1】:

您可以编写一个 bash 脚本,该脚本每 2 秒执行一次您的 php 脚本,以定义数量。并且这个 bash 脚本可以通过 cronjob 执行。

例子:

#!/bin/bash

count=10

for i in `seq 1 $count`; do
    /bin/php /path/to/scrip.php &
    sleep 2
done

【讨论】:

  • 它工作正常。我必须运行脚本 1 分钟,所以我更新 count=30。
猜你喜欢
  • 2013-02-23
  • 1970-01-01
  • 2016-07-24
  • 2022-01-11
  • 2014-10-12
  • 2013-02-04
  • 2010-12-19
  • 1970-01-01
  • 2014-09-25
相关资源
最近更新 更多