rubylc_unix 发表于 2012-10-16 17:05

PHP如何实现异步?

情况如下;
   客户端发请求到服务器,服务器根据这个请求会进行相应的处理,但是这个处理的时间比较长,如果同步的话很可能出现timeout,所以想把请求扔到消息队列里面然后立马给出返回。同时另外有专门的线程或者进程来处理这个消息队列。想问问有没有这方面成熟的解决方案的?

linux_c_py_php 发表于 2012-10-16 17:44

RabbitMQ, ZeroMQ, 首推这两个.

sickcat2004 发表于 2012-10-17 09:29

不用那么麻烦。。。存在数据库里面,搞一个crontab慢慢跑。。。:luya:

bikong0411 发表于 2012-10-17 09:29

libevent:victory::victory:

sickcat2004 发表于 2012-10-17 09:35


bikong0411 发表于 2012-10-17 09:29 static/image/common/back.gif
libevent
:Q:Q ,,杀鸡用牛刀!

rubylc_unix 发表于 2012-10-17 15:08

回复 3# sickcat2004


    CRONTAB最小的精度是分钟吧,怎么达到更小的精度,另外有没有触发或者通知机制什么的。

satrun7 发表于 2012-10-17 22:47

本帖最后由 satrun7 于 2012-10-17 22:48 编辑

回复 6# rubylc_unix
如果要精确到秒执行,你在脚本做一个进队,出队的逻辑,保持列队,然后使用crontab每分钟去监控脚本。不过如果是长时间运行脚本做队列,我觉得php已经不适合你开发需求了。

sickcat2004 发表于 2012-10-18 09:53

rubylc_unix 发表于 2012-10-17 15:08 static/image/common/back.gif
回复 3# sickcat2004



:luya: crontab精度不够,你就整个死循环嘛 。。。。守护在那里干活。你要啥精度都可以了。。。。。。

xinglu1983 发表于 2012-10-19 09:03

回复 8# sickcat2004


    php的垃圾回收机制如果在死循环下会出问题吧。


想不出楼主既然要异步了,为何还不能接受一分钟的延迟呢?

sickcat2004 发表于 2012-10-19 09:31

xinglu1983 发表于 2012-10-19 09:03 static/image/common/back.gif
回复 8# sickcat2004



不会的。。。。。。
set_time_limit(0)
页: [1] 2
查看完整版本: PHP如何实现异步?