PHP: 运行 php 每10秒编码一次
PHP: run php code every 10 seconds
我想要 运行 php 每 10 秒编码一次,但我的代码有问题
因为函数是随机延迟的(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));
我想要 运行 php 每 10 秒编码一次,但我的代码有问题
因为函数是随机延迟的(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));