我有一个用 Symfony 编写的网络服务。应用程序调用它并输入必须在特定时间发送到应用程序的消息。服务器上的 cronjob 每分钟运行一次并检查必须发送哪些消息。但是用户可以定义他想要接收这些消息的时间范围。
我通过以下方式查询这些消息:
$query = $em->createQuery('
SELECT m
FROM MyBundle:Message m
INNER JOIN m.user u
WHERE m.active = true
AND m.nextMessageOn <= :now
AND u.receiveMessagesFrom <= :now
AND u.receiveMessagesTo >= :now
ORDER BY m.id ASC
')->setParameter('now', new \DateTime('now'));
(出于演示目的,“从时间”必须在“到时间”之前)
现在我遇到了问题,用户可以使用与服务器不同的时区。
是否有某种最佳实践来处理空洞时间(日期时间)/时区/服务器/应用程序问题?特别是对于 Symfony (Doctrine) 是否有一种干净的方式来查询这些项目?