Привет, ребята, у меня есть код, который начинается и заканчивается в определенное время, мой код работает нормально, но я хочу использовать этот код в цикле данных
например, я добавлю имена в цикл и хочу, чтобы каждый начинался и заканчивался в определенное время:
это мой код:
<?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 и вам нужен скрипт в конкретное время. Просмотрите свой алгоритм !!!
Других решений пока нет …