web-dev-qa-db-ja.com

24時間ごとにクーロンをトリガーするGMT -8

PSTの真夜中に24時間ごとにcronを実行したい(= GMT -8)

これは私が持っているものです

if ( !wp_next_scheduled( 'cron_hook' ) ) {
    //reset on 00:00 PST ( GMT -8 ) == GMT +16
    $timeoffset = strtotime('midnight')+((24-8)*HOUR_IN_SECONDS);
    if($timeoffset < time()) $timeoffset+(24*HOUR_IN_SECONDS);
    wp_schedule_event($timeoffset, 'daily', 'cron_hook');
}

これは毎日のクーロンをGMT-8の真夜中-8(24-8)に設定し、すでに過ぎている場合は24時間延期するので、作成時にクーロンはトリガーされません。

私はこのアプローチを修正しますか、それとも何かを見逃しますか?

私はすでにそれをテストしました、しかし私のサーバーはGMT + 0で動いているので私は他のタイムゾーンのためにそれを確かめることができません

3
Xaver

ほぼ、

WordPressは常にUTCタイムスタンプを扱うので、WP Cronジョブは特定の時間には実行されず、概算で、すべてのタイムスタンプはUTCであるべきです。 。真夜中のPSTが必要な場合は、午後8時UTCを指定します。

また、例えば上記のコードは深夜0時のPSTを示唆していますが、深夜0時のPSTでは実行されない可能性があります。指定された時間に誰もサイトにアクセスせず、誰かが到着する4時間前には、cronジョブは午前4時に発生します。

正確ではない正確なcronジョブが必要な場合は、一定の間隔でwp cron URLを呼び出すようにサーバーcronジョブを設定する必要があります。

また、将来の衝突や問題を防ぐために、 'cron_hook'よりも具体的な名前を選択します。

真夜中のPSTがUTCの何時にあるのかを知ることで、これを簡単にテストできます。

1
Tom J Nowell