因此,今天早上我在使用WP Cron的网站上遇到问题。代码如下:
//Schedule the cron to run if not scheduled
if ( ! wp_next_scheduled( 'my_check_cron_event' ) ) {
wp_schedule_event( strtotime('tomorrow America/New_York') , 'daily', 'my_check_cron_event' );
}
问题很简单。该代码运行良好,基本上我想每天在当地时间午夜运行该函数。因此,当我第一次运行该功能时-它会获得明天午夜的时间戳-当地时间。从那以后-functino一直在运行。
现在这个周末-由于夏令时,该功能实际上不再需要重新安排-它仅设置为每24小时运行一次。因此该功能在晚上11点开始运行。当然,这很容易解决-但会再次中断。我真的找不到关于该主题的任何好帖子-您将如何处理:
夏令时改变时,wp_schedule_event每天运行一次吗?
这里只是抢先一个明显的答案:我无法运行适当的cron-它需要通过wp完成。我们的主机根本不支持它,很糟糕-但这就是客户。任何建议将不胜感激!
答案 0 :(得分:0)
因此,对于遇到此问题的任何人,今天我都必须回到此作为永久解决方案-夏时制即将改变!这里的根本问题是wp_schedule_event-接受一个参数,即下一次运行之前的秒数。该参数将保存到cron数组中-实际上,它并不在乎您所在的时区。它只是以该间隔运行。为了解决这个问题-我不得不切换到wp_schedule_single_event。
这似乎违反直觉,因为我们希望此间隔运行。但是区别是-我们需要重新计算下一个运行的时间戳:
if ( ! wp_next_scheduled( 'my_check_cron_event' ) ) {
wp_schedule_single_event( strtotime('tomorrow America/New_York'), 'my_check_cron_event' );
}
这里的区别是strtotime()每天都会获得正确的时间戳-考虑到夏时制,而不是每24小时运行一次。希望能帮助到某人!