加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:45:42 所属栏目:百科 来源:网络整理
导读:React PHP如何处理异步非阻塞I / O? Nodejs使用其事件队列来处理不同线程上的I / O.它使用libuv.就像在PHP中那样,React如何处理单个线程上的非阻塞I / O进程? React PHP提供应用程序的主要事件循环;您仍然需要以非阻塞方式编写代码,因为它全部在一个线程上
React PHP如何处理异步非阻塞I / O?

Nodejs使用其事件队列来处理不同线程上的I / O.它使用libuv.就像在PHP中那样,React如何处理单个线程上的非阻塞I / O进程?

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

其他选项包括编程类似于FSM的东西(https://en.wikipedia.org/wiki/Finite-state_machine);这允许它随着它的进展不断更新它的当前状态;每次允许运行某些代码块,然后将线程放弃到循环中的任何其他内容.基本上实现自己的时间切片(https://en.wikipedia.org/wiki/Preemption_(computing)#Time_slice)

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

tldr;使用您的应用程序体系结构不会导致php阻塞,设置流不阻止,或使用线程/进程控制来管理您自己的多线程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读