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

时间:2016-11-18 12:36:59

标签: php date dst

大家好我有一个代码在特定时间开始和结束,我的代码工作正常,但我想在循环的数据中使用此代码 例如,我在循环中输入名称,我希望每个名称在特定时间内开始和结束:

这是我的代码:

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

我想知道如何将它与循环数据一起使用?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用EV或事件扩展或循环实现。我更喜欢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!

OR使用事件(但我更喜欢使用套接字的事件):

$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,如果你需要在具体的时间内使用死脚本。检查你的算法!!!