2016-11-18 12 views
1

こんにちはみんなは、私は特定の時間に開始と終了コードを持って、私のコードは正常に動作しているが、私は例えばループ iはループ内鍋の名前をだろうことをデータでこのコードを使用したい起動と終了それぞれが特定の時間に開始および終了するために、私はしたい:コードの特定の時間に

これは私のコードです:

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

cronは必要ありません – AllordEmad

+0

時間を何度もチェックする連続ループでスクリプトを実行していますか? – Blinkydamo

答えて

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!

それともwhilを試すことができますE、例えば:例では

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を使いたいなら、具体的な時間にスクリプトを死ぬ必要があるなら。アルゴリズムを見直す!

関連する問題