2016-11-18 2 views
1

Привет, ребята, у меня есть код, который начинается и заканчивается в определенное время, мой код работает нормально, но я хочу использовать этот код в данных, которые образуют цикл , например, я буду использовать имена в цикле и я хочу для каждого из них, чтобы начать и конца в определенное время:Начало и конец кода в определенное время

это мой код:

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

и я хочу знать, как использовать его с данными цикла?

спасибо.

+0

вам нужен cron для запуска скрипта в заданное время – Blinkydamo

+0

no cron не требуется – AllordEmad

+0

Итак, вы запускаете скрипт в цикле непрерывности, проверяя время снова и снова? – Blinkydamo

ответ

1

Вы можете использовать расширение 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); 
} 

В примере я использую undeclareted переменная:

$repeatAfterSecond - seconds to next iteration or next call 
$isTimeEndNow - this is: time() > $endTimestamp 
$needWorkedSeconds - this is seconds: time_start - time_end 

внимани !!! Быть осторожен! Я думаю, что вы ошибаетесь, если хотите использовать MySQL, и если вам нужен скрипт в конкретное время. Просмотрите свой алгоритм !!!

Смежные вопросы