代码在特定时间开始和结束

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();

More read here!

或使用事件(但我更喜欢事件与套接字一起工作):

$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();

More read here!

或者你可以试一下,例如:

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 并且你需要在具体时间死脚本。检查你的算法!!!