Php 实现消息传递队列的最佳方法

Php 实现消息传递队列的最佳方法,php,mysql,sql,yii,push-notification,Php,Mysql,Sql,Yii,Push Notification,我想在我们的webproject中实现某种消息队列系统。我只是想知道最好的方法是什么。它是用PHP(Yii框架)编写的,数据库系统是MySQL 这个想法: 用户1向用户2发送消息,但该消息将在将来发布(即02-11-2013 14:31) 用户2于2013年11月2日14时31分在其收件箱中接收到来自用户1的消息,并收到有关此新消息的通知电子邮件 我想到了两种方法: 在“消息”表中插入来自用户1的消息,其中包含消息应发送给用户2的日期和时间。用户2只能在该日期和时间小于当前日期和时间时读取它

我想在我们的webproject中实现某种消息队列系统。我只是想知道最好的方法是什么。它是用PHP(Yii框架)编写的,数据库系统是MySQL

这个想法:

  • 用户1向用户2发送消息,但该消息将在将来发布(即02-11-2013 14:31)
  • 用户2于2013年11月2日14时31分在其收件箱中接收到来自用户1的消息,并收到有关此新消息的通知电子邮件
我想到了两种方法:


  • 在“消息”表中插入来自用户1的消息,其中包含消息应发送给用户2的日期和时间。用户2只能在该日期和时间小于当前日期和时间时读取它(
    WHERE addTime您可以使用CURL而不是CRON,CRON将自行请求“CRON作业脚本”。
    
    它将在之前完成后调用。如果脚本将在1分钟左右运行,您可能会延迟CURL请求。

    < P>请考虑使用RabBMQ实现AMQP模型()。
    但是,如果您已经确定此消息传递系统需要快速发展,您可能需要查看

    的文档。您的意思是脚本在完成后会自动调用?您正在创建某种无限循环。这是一个想法,但听起来可能会出很多问题。如果不这样做呢脚本运行了两次,或者由于服务器重新启动而结束。我刚才给了你一个想法:)我想,常规的CRON作业仍然是最好的解决方案。我知道;)。我们以前用过它,但有必要在几分钟内准确传递信息。只有让cronjob每分钟运行一次才能做到这一点,这可能会导致重叠。我可以想出两种解决方案:在DB中添加字段标记消息是否已传递,以及在每次传递之前检查。另一个方法是将正在运行的cron作业添加到某个文件中,并在脚本结束时将其从文件中删除。你将对已经完成的和未完成的有更多的控制。谢谢,看起来很有趣!我会看一看,但事实上,我认为就我目前所看到的来看,这可能有点过头了。