2017-11-21 3 views
0

私のソリューションは主に機能しますが、常にそうではありません。PHPは新しい日の最初のループを検出します

<?php 

date_default_timezone_set('UTC'); 
$seconds_today = time() - strtotime('today'); 

while (true) { 
    if ($seconds_today > time() - strtotime('today')) { 
     print('First loop of the new day'); 
    } 
    $seconds_today = time() - strtotime('today'); 
    sleep(1); 
} 

?> 
+2

あなたは何がこのコードから期待していますか? –

+0

あなたは達成しようとしていることを詳しく説明できますか? –

+0

「新しい日の最初のループを検出する」とはどういう意味ですか? –

答えて

1

私はPHPのsyntaxeのかわからないけど、ここの考えです:

<?php 

date_default_timezone_set('UTC'); 
$previous_day = 0; 

while (true) { 
    if ($previous_day != strtotime('today')) { 
     print('First loop of the new day'); 
     $previous_day = strtotime('today'); 
    } 
    sleep(1); 
} 

?> 
+0

@ xs0 haha​​ha - あなたはどちらも完全に正しい - 私は秒が必要ではなく、ちょうど新しい日であることに気づくためにあまりにも愚かではなかった - 私の質問が既に暗示したこと...ありがとうあなたのスピードとフレンドリーなアドバイスの両方をあなたに! – user8613418

2

あなたが興味を持っているのがその日であれば、秒/時間で気にする必要はありません。さらに、ループごとに2回の時間をチェックすると、スイッチが間違っている可能性があるので、正確に1回確認する方が頑強です。

<?php 

date_default_timezone_set('UTC'); 
$lastDay = date("Y-m-d"); 

while (true) { 
    $now = date("Y-m-d"); 
    if ($now !== $lastDay) { 
     $lastDay = $now; 
     print("First loop of the new day"); 
    } 
    sleep(1); 
} 

?> 

可能であれば、私は、cronのようなものを使用したい、と述べた。..

+0

@DSB haha​​ha - あなたは両方とも完全に正しい - 私は秒が必要ではなく、ちょうど新しい日であることに気付くにはあまりにも愚かではなかった - 私の質問が既に暗示したこと...あなたの迅速で親切なアドバイスの両方に感謝する! – user8613418

+0

これはあなたがここで説明したことです」さらに、ループごとに2回の時間をチェックすると、スイッチが間に合わない可能性があるので、それを正確にチェックするのがより堅牢です。一日の秒を使用して過度の複雑なもの。だからもう一度 - ありがとうございます:) – user8613418

関連する問題