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で動いているので私は他のタイムゾーンのためにそれを確かめることができません
ほぼ、
WordPressは常にUTCタイムスタンプを扱うので、WP Cronジョブは特定の時間には実行されず、概算で、すべてのタイムスタンプはUTCであるべきです。 。真夜中のPSTが必要な場合は、午後8時UTCを指定します。
また、例えば上記のコードは深夜0時のPSTを示唆していますが、深夜0時のPSTでは実行されない可能性があります。指定された時間に誰もサイトにアクセスせず、誰かが到着する4時間前には、cronジョブは午前4時に発生します。
正確ではない正確なcronジョブが必要な場合は、一定の間隔でwp cron URLを呼び出すようにサーバーcronジョブを設定する必要があります。
また、将来の衝突や問題を防ぐために、 'cron_hook'よりも具体的な名前を選択します。
真夜中のPSTがUTCの何時にあるのかを知ることで、これを簡単にテストできます。