首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP如何处理异步非阻塞I/O?

PHP如何处理异步非阻塞I/O?
EN

Stack Overflow用户
提问于 2015-06-16 09:27:02
回答 1查看 4.6K关注 0票数 7

PHP如何处理异步非阻塞I/O?

Nodejs使用它的事件队列来处理不同线程上的I/O。它用利布夫来做这个。在PHP中,没有类似的东西,如何在单个线程上处理非阻塞I/O进程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-16 21:41:38

React提供了应用程序的主要事件循环;您仍然需要以非阻塞的方式编写代码,因为它都在一个线程上。可能的解决方案都围绕着使用php的不同,我相信大多数php开发人员都习惯于.尽管React提供了主循环,但大部分的React库都是套接字/流/答应/等等的实现。这些都采用了实现对I/O的非阻塞访问的方法;通常通过使用stream_set_blocking (http://php.net/manual/en/function.stream-set-blocking.php)来实现。

其他选项包括编写类似于FSM (machine)的程序;这允许它随着进度不断地更新其当前状态;每次允许运行某些代码块,然后将线程放弃给循环中的任何其他内容。本质上实现您自己的时间切片(slice )

另一种选择是实现默认不启用的线程(http://php.net/manual/en/book.pthreads.php);最后一个选项是使用进程控制来分叉/启动/控制其他进程(http://php.net/manual/en/intro.pcntl.php),这些进程仅在*nix系统上启用;它允许主机CPU控制时间切片;您只需要架构您的应用程序,使其线程安全、与消息队列通信或其他机制。

使用您的应用程序架构不导致php阻塞,设置您的流不阻塞,或者使用线程/进程控制来管理您自己的多线程。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30863664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档