gpt4 book ai didi

php - 如何根据时区设置WP Cron作业时间戳?

转载 作者:行者123 更新时间:2023-11-29 18:40:37 27 4
gpt4 key购买 nike

我在午夜使用服务器 cron 作业来安排 WP 事件,以向客户发送有关其过期产品的更新。无论我写什么,时间都会转换为我的 UTC+5 时区。

PHP 代码:

function register_daily_expired_products_event() {
if (!wp_next_scheduled('send_emails')) {

// Schedule daily expired products event
wp_schedule_event(strtotime('today midnight'), 'daily', 'ptmp_notify_customers');
}
}

add_action('init', 'register_daily_expired_products_event');

function ptmp_send_product_expiry_emails() {
// Custom code
}

// Notify customers with their expired products
add_action('ptmp_notify_customers', 'ptmp_send_product_expiry_emails');

使用 WP Crontrol 插件测试了 cron 作业事件,根据我的时区 (UTC+5) 显示 +5 小时。例如

时间应该是:2017-07-08 00:00:00

但实际上: 2017-07-08 05:00:00(添加了 5 小时)

服务器 cron 作业在中午 12:00 准确运行,但在后端,该事件还有 5 个小时以上,尚未准备好执行。因此,即使客户当天有过期产品,也不会发送电子邮件。任何帮助将不胜感激。谢谢!

最佳答案

如果我理解正确,您希望将服务器端 cronjob 执行时间调整为您的用户时区。

有两种方法可以做到。

a) 所有用户都在同一时区

如果您的客户都位于同一时区,您必须将 cronjob 执行时间调整为该特定时区。

b) 用户有不同的时区

如果您的客户不在同一时区,您必须每小时(或每 30 分钟、15 分钟...)运行一次 cronjob,并根据您的用户时区检查时间。

所以你的 cronjob(即每小时)应该做这样的事情:

  1. 获取所有过期产品
  2. 获取产品所属用户的时区
  3. 检查当前时间是否为用户所在时区的 00:00 左右
  4. 如果是,请发送通知电子邮件

查看有关如何设置时区的官方 PHP 文档: http://php.net/manual/de/datetime.settimezone.php

关于php - 如何根据时区设置WP Cron作业时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44968417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com