毎秒コマンドを実行する必要があります。これは、真のロジックとsleep(1)のwhile(true) 。以下 全コード:Laravel 5.2コマンドPHPのdate()スタック
public function handle()
{
$this->setUniverse();
while(true) {
$updateStart = microtime(true);
$this->fleetHandler->update();
$updateEnd = microtime(true);
$this->info('Fleets updated for time '. date("d m Y H:m:s") . ' on universe ' . $this->universe);
usleep(1000000);
}
}
このコマンドを確保するためにのみ、私は、スケジューラでこのコードを持っていたら
$schedule->command('game:fleet:update', ['universe' => $key])
->everyMinute()
->withoutOverlapping();
を実行し、問題:
何が起こることは時間がによって印刷さということですPHPのdate()関数は、秒を除いて常に同じです。時刻11:02も常に同じで、VMを再起動するとリセットされます。コンソールに
出力例
Fleets updated for time 13 02 2017 11:02:57 on universe alpha
Fleets updated for time 13 02 2017 11:02:58 on universe alpha
Fleets updated for time 13 02 2017 11:02:59 on universe alpha
Fleets updated for time 13 02 2017 11:02:00 on universe alpha
Fleets updated for time 13 02 2017 11:02:01 on universe alpha
Fleets updated for time 13 02 2017 11:02:02 on universe alpha
Fleets updated for time 13 02 2017 11:02:03 on universe alpha
私はdate
すべてでシステム時刻を確認し、正常です。誰でもここで何が起こっているか教えていただけますか?ありがとうございました。
だけのcronでコマンドを起動しようとすることはできますか?それは毎秒あなたのコマンドを開始します。 PHPは長時間のスクリプトには悪いです。 – KoIIIeY
https://laravel.com/docs/5.2/scheduling – KoIIIeY
cronでは、毎秒スクリプトを実行することはできません。 –