代码在特定时间开始和结束
Code start and end in specific time
大家好,我有一个在特定时间开始和结束的代码,我的代码工作正常,但我想在循环的数据中使用这段代码
例如,我将在循环中放置名称,我希望每个名称都在特定时间开始和结束:
这是我的代码:
<?php
date_default_timezone_set('America/New_York');
$time = date('Y:m:d H:i:s');
$timestart = date('Y:m:d H:i:s'); //time start
$timeend = '2016:11:17 10:56:00'; //time end
if($time >= $timeend){
echo "time end";
}else{
echo 'untel end time';
}
$now = new DateTime();
$future_date = new DateTime($timeend);
$interval = $future_date->diff($now);
?>
我想知道如何将它与循环数据一起使用?
谢谢。
您可以使用 EV 或 Event 扩展或通过循环实现。我更喜欢 EV 扩展到这个任务
并创建定时器,例如:
// Required create variable!
$w = new EvTimer($needWorkedSeconds, $repeatAfterSecond, function ($w) {
echo "iteration = ", Ev::iteration(), PHP_EOL;
});
// Loop until Ev::stop() is called or all of watchers stop
Ev::run();
或使用事件(但我更喜欢事件与套接字一起工作):
$base = new \EventBase();
$e = \Event::timer($base, function($n) use (&$e) {
echo "$n seconds elapsed\n";
if($isTimeEndNow)
{
$e->delTimer();
}
}, $repeatAfterSecond);
$e->addTimer($repeatAfterSecond);
$base->loop();
或者你可以试一下,例如:
while(true)
{
if($isTimeEndNow)
{
break;
}
sleep($repeatAfterSecond);
}
在示例中我使用未声明的变量:
$repeatAfterSecond - seconds to next iteration or next call
$isTimeEndNow - this is: time() > $endTimestamp
$needWorkedSeconds - this is seconds: time_start - time_end
注意!!!小心! 我认为你犯了错误,如果你想使用 MySQL 并且你需要在具体时间死脚本。检查你的算法!!!
大家好,我有一个在特定时间开始和结束的代码,我的代码工作正常,但我想在循环的数据中使用这段代码 例如,我将在循环中放置名称,我希望每个名称都在特定时间开始和结束:
这是我的代码:
<?php
date_default_timezone_set('America/New_York');
$time = date('Y:m:d H:i:s');
$timestart = date('Y:m:d H:i:s'); //time start
$timeend = '2016:11:17 10:56:00'; //time end
if($time >= $timeend){
echo "time end";
}else{
echo 'untel end time';
}
$now = new DateTime();
$future_date = new DateTime($timeend);
$interval = $future_date->diff($now);
?>
我想知道如何将它与循环数据一起使用?
谢谢。
您可以使用 EV 或 Event 扩展或通过循环实现。我更喜欢 EV 扩展到这个任务
并创建定时器,例如:
// Required create variable!
$w = new EvTimer($needWorkedSeconds, $repeatAfterSecond, function ($w) {
echo "iteration = ", Ev::iteration(), PHP_EOL;
});
// Loop until Ev::stop() is called or all of watchers stop
Ev::run();
或使用事件(但我更喜欢事件与套接字一起工作):
$base = new \EventBase();
$e = \Event::timer($base, function($n) use (&$e) {
echo "$n seconds elapsed\n";
if($isTimeEndNow)
{
$e->delTimer();
}
}, $repeatAfterSecond);
$e->addTimer($repeatAfterSecond);
$base->loop();
或者你可以试一下,例如:
while(true)
{
if($isTimeEndNow)
{
break;
}
sleep($repeatAfterSecond);
}
在示例中我使用未声明的变量:
$repeatAfterSecond - seconds to next iteration or next call
$isTimeEndNow - this is: time() > $endTimestamp
$needWorkedSeconds - this is seconds: time_start - time_end
注意!!!小心! 我认为你犯了错误,如果你想使用 MySQL 并且你需要在具体时间死脚本。检查你的算法!!!