php - 如果使用 PHP 用户的时区发生更改,如何处理存储在数据库中的用户数据

标签 php mysql cron timezone

如果用户将提醒通知时间准确设置为上午 8 点,那么即使他移至不同的时区,他也应该在上午 8 点准确地收到通知

我的意思是,即使之后他搬到了具有不同时区的任何其他国家/地区,他也应该在该国家/地区早上 上午 8 点 准确地收到通知。

为了发送通知,我使用在 UTC 时区e 运行的 CRON

考虑这个例子,用户的提醒时间是 IST (+5:30) 上午 8 点,我将 UTC 时间 2:30 存储到数据库中。但如果他移至 EDT (-4:00) 时区会怎样?而且我也有大量的用户数据。

考虑到我必须使用 PHP 执行该操作并且数据库是 MySQL,请提出解决方案。

最佳答案

我将通过 CRON 在服务器上执行所有通知操作。让我们想象一个简单的例子:

1) 您居住在采用 GMT+3 时区的国家 A。现在是 14:00 GMT+3。您在B 国召开 session ,时间为GMT+1

2) 您在该国家/地区的 session 时间为 16:00 GMT+1 或 18:00 GMT+3。距离 session 还有 4 个小时。

3) 您在申请中预约了 18:00 GMT+3 的 session 。服务器中的所有约会均保存为 GMT+0,因此该约会保存为 15:00 GMT+0

4) 让我们假设您传送到 session 所在国家/地区,现在时间为 12:00 GMT+1。 4 小时过去后(16:00 GMT+1、18:00 GMT+3、15:00 GMT+0),无论您更改时区,服务器仍会收到通知。由于服务器会将您的约会保存为 GMT+0,并且每隔(假设 5 分钟)检查一次 CRON 作业(如果某人的约会到期)。

另一方面,如果您想在客户端上执行检查,则应始终将客户端的日期时间转换为服务器上保存的任何格式,然后与服务器进行检查。

关于php - 如果使用 PHP 用户的时区发生更改,如何处理存储在数据库中的用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50061106/

相关文章:

php - MySQL同时select两个表

mysql - 无法通过navicat连接远程mysql数据库

mysql - 我可以使用 SQL 注入(inject)来更改服务器数据库吗?

mysql - 将 () 算作某物

git - 使用 ssh key 的 cron git push

cron - 使用齿轮工与 cron 进行调度?

PHP Mysql $Id问题 Cannot Retrieve Data Using only $id as parameter

javascript - 在 Highcharts 中使用插件 CSV 导出时如何自定义文件名?

java - 如何配置log4j只保留最近n天的日志文件?

javascript - 使用 jquery 定位正确的 id