繁体   English   中英

PHP:每10秒运行一次PHP代码

[英]PHP: run php code every 10 seconds

我想每10秒运行一次PHP代码,但我的代码有问题

因为功能是随机延迟(2秒到5秒)

我希望在10秒内获得精确的运行代码,如果超时或者超过5秒则传递函数

代码:

for($i=0;$i<=5;$i++){
     echo date('Y-m-d H:i:s').'<br />';
     get_file_content('....'); //load file from server ( make 2 seconds until 5 seconds )
     sleep(10); // sleep for 10 seconds
}

结果1:

2017-04-14 15:25:35
2017-04-14 15:25:46
2017-04-14 15:25:57
2017-04-14 15:26:08
2017-04-14 15:26:19
2017-04-14 15:26:30

另一个结果:

2017-04-14 15:32:22
2017-04-14 15:32:34
2017-04-14 15:32:44
2017-04-14 15:33:01
2017-04-14 15:33:17
2017-04-14 15:33:29

我想得到这个结果(甚至加载文件很长一段时间)

确切结果:

2017-04-14 15:25:00
2017-04-14 15:25:10
2017-04-14 15:25:20
2017-04-14 15:25:30
2017-04-14 15:25:40
2017-04-14 15:25:50

怎么样的东西:

for($i=0;$i<=5;$i++){
$previousTime = date();
 echo date('Y-m-d H:i:s').'<br />';
 get_file_content('....'); //load file from server ( make 2 seconds until 5 seconds )
 sleep(10-(date()-$previousTime));
}

只需计算file_get_contents花了多长时间。

echo date('Y-m-d H:i:s').'<br />';
$start = time();
get_file_content('....'); //load file from server ( make 2 seconds until 5 seconds )
$end = time();
$diff = $end - $start;
if ($diff < 10) sleep(10 - $diff); // sleep for (10 - the amount how long the get took) seconds
// Skip if longer than 10

尝试计算执行功能所需的时间

for($i=0;$i<=5;$i++){
    echo date('Y-m-d H:i:s').'<br />';
    $start = time();
    get_file_content('....'); //load file from server ( make 2 seconds until 5 seconds )
    $time_elapsed = time() - $start;
    if ($time_elapsed>0 || $time_elapsed<=10) sleep(10- $time_elapsed);
}

为了更准确,使用microtime

我找到解决方案:

$context = array('http' => array('timeout' => 10));
$data = file_get_contents('...',false,stream_context_create($context));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM