php关于队列的异步的理解

rwrqrwr 发布于 2016/10/09 11:12
阅读 610
收藏 0
PHP
加载中
0
Minho
Minho
php是单进程单线程的,异步是怎么回事?
rwrqrwr
rwrqrwr
@Minho 回复@Minho : 嗯啊, 懂,
Minho
Minho
回复 @ping_xu : 是两个动作不假,但是必须同步完成。也就是你必须等待网页请求完成,网页必须等待写入队列完成。
rwrqrwr
rwrqrwr
@Minho 回复@Minho : 不对吧, 这是两个啊, 比如你现在是网页请求了一个页面, 我在后台的php代码里面,丢一个任务给队列, 不影响网页的请求啊
Minho
Minho
回复 @ping_xu : 这不算,php是单线程执行,你的网页请求不完,php是无法结束的,除非你设置一个超短的超时时间。
rwrqrwr
rwrqrwr
我也是这么认为的, 不过么, 如果是另一种操作呢, 一边请求一个网页,然后再网页里面丢一个任务给一个队列,这样算不算是异步?
0
eechen
eechen
队列的特点是先进先出,你可以把一张带有自增字段的数据表(有序)当做一个队列.PHP可以用proc_open/popen新建子进程使用管道通信异步非阻塞执行PHP脚本去消化这个队列表(order by id asc limit 1排序),这个PHP脚本是一个运行在cli下用于轮询并执行任务的后台脚本.队列表里处理完成的任务将其状态字段status标记为完成,有返回值的则写入返回内容字段return.如果你要求在内存上操作队列,可以考虑使用MySQL内存表或者存储于Linux内存文件系统/dev/shm上的SQLite.
honey_fansy
honey_fansy
回复 @eechen : 楼主的问题太难了,我不会,我只会回答你的问题
eechen
eechen
回复 @honey_fansy : 你真赢得起来就不会只在我贴子底下说了,真有本事就自己给楼主回个技术贴呀,别只会动嘴皮子.
honey_fansy
honey_fansy
回复 @eechen : 在老子面前,PHPer也硬不起来,哈哈哈
eechen
eechen
回复 @honey_fansy : 在鸟哥面前,JAVAer硬不起来了呀.
honey_fansy
honey_fansy
回复 @eechen : PHP的异步调用我不知道,我说的是浏览器的异步,上句少了个吧。还有,不要老拿人家来引证
下一页
0
宏哥
宏哥

引用来自“eechen”的评论

队列的特点是先进先出,你可以把一张带有自增字段的数据表(有序)当做一个队列.PHP可以用proc_open/popen新建子进程使用管道通信异步非阻塞执行PHP脚本去消化这个队列表(order by id asc limit 1排序),这个PHP脚本是一个运行在cli下的后台服务脚本.队列表里处理完成的任务将其状态字段status标记为完成,有返回值的则写入返回内容字段return.如果你要求在内存上操作队列,可以考虑使用MySQL内存表或者存储于Linux内存文件系统/dev/shm上的SQLite.
用sysv msg即可
返回顶部
顶部