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

2024-01-06

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

Nodejs 使用其事件队列来处理不同线程上的 I/O。它使用 libuv 来实现此目的。 PHP 中没有类似的东西,React 如何处理单线程上的非阻塞 I/O 进程?


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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React PHP 如何处理异步非阻塞 I/O? 的相关文章

  • 使用 DOJO 自动完成文本框

    我正在寻找一种使用 DOJO 进行文本框自动建议的简单方法 我将查询的数据库表 使用 PHP 脚本 以 JSON 形式返回 有超过 100 000 条记录 因此这确实不应该采用 FilteringSelect 或 ComboBox 的形式
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将
  • 如何确定当前使用哪个网格选项

    我将 Bootstrap 3 用于使用 PHP 和 HTML 创建的网页 随着响应式网格和类的开启引导程序3您可以将多个类分配给一个 div 以根据当前屏幕尺寸定义不同的宽度 例如 div class col lg 3 col md 3 c
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • 在 Laravel 中动态设置数据库连接和语言

    我有 3 个域指向同一个Laravel应用 我想要的是每个人都连接到自己的数据库并根据 TLD 加载自己的语言文件 我可以在哪个文件中设置这些设置 我可以直接在配置文件中执行此操作 或者可以在加载配置之前执行某些事件 我拥有的是一个简短的函
  • 尝试获取 Google accessToken

    看起来 无论我做什么 谷歌都在竭尽全力阻止我完成这个研究项目 我的项目让我使用 Google 电子表格作为数据库 并使用所述电子表格中的数据执行程序化的 Google 图片搜索 并向最终用户显示一些结果 设置说明 我开始按照此处的说明进行操
  • Doctrine 1 和 Symfony 1 的多个主键?

    我已经知道在 Symfony 1 和 Doctrine 1 中不可能使用多个主键 但是你们知道有什么好的解决方法吗 除了多对多关系之外 原则 1 不适用于多列上的主键 但如果你想使用多对多关系 请像这样使用 BlogPost columns
  • Yii2 中 init() 和 __construct() 方法有什么区别

    init 方法 public function init construct method public function construct 那么 它们之间有什么区别 应该使用哪一个呢 init 是从以下对象扩展的任何对象的方法yii b
  • 在 null laravel 上调用成员函数 save()

    大家好 我正在使用 laravel 5 多态关系将数据保存在数据库中 但我遇到了一些问题 当我尝试将数据保存在数据库中时 它会抛出此错误 对 null 调用成员函数 save 我不知道为什么我会遇到这个错误 我正在关注多态关系的本教程在 L
  • 是否可以在自定义 WCF 服务行为中创建 TransactionScope? (异步、等待、TransactionScopeAsyncFlowOption.Enabled)

    TL DR 解释问题的截屏视频 https youtu be B Q3T5KpiYk https youtu be B Q3T5KpiYk Problem 当交易从客户端流向服务时交易 当前变成null after awaiting服务到服
  • 重新排列数组键 php [重复]

    这个问题在这里已经有答案了 我有这个数组 Array 15 gt 13 1 16 gt Mark one answer 19 gt You see a car on the hard shoulder of a motorway with
  • 如何使用 AFNetworking 2 按严格的顺序发送请求?

    我正在进行同步以将 sqlite 数据库镜像到服务器数据库 我有一个主从表 其中的详细信息必须尽快发送到服务器 但是 细节 3 可能会先于细节 2 到达 我需要模仿对文档执行的步骤并尊重操作的顺序 当记录保存在本地时 我会发送通知 然后发布
  • Windows iis 7.0 上的 APC 不稳定

    我的 IIS 非常不稳定 因为它总是由于某种与 APC 相关的原因而重新启动 服务器的规格如下 Intel R Xeon CPU 3GHZ 3GHZ 2GB RAM 64bit APC 和服务器规格 3 1 7 dev PHP Versio
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28

随机推荐

  • 管道:错误的文件描述符

    我知道以前有人问过这类帖子 但他们的水平显然比我想象的要高 读完他们的帖子后我仍然不明白 所以我决定从这里再次发布这个问题 我正在学习使用管道进行多进程通信 我遇到了这个名为 错误文件描述符 的错误 我不明白为什么我的代码中会出现此错误 i
  • 文本索引 MongoDB,搜索字符串的最小长度

    我已经从 mongo shell 为集合 X 创建了一个文本索引 db X ensureIndex name text cusines text address city text 现在如果一个文档的 name 属性有一个值seasons
  • 响应式设计中的固定位置

    我正在使用响应式框架 1140px 在移动版本中 我必须修复徽标的位置 但不能使其与滚动内容重叠 基本上固定位置但不固定滚动图像 这可以实现吗 你想使用position absolute position fixed将元素固定在屏幕上 因此
  • java中通过HTTP Get下载文件

    我编写了一个下载 Servlet 以根据 messageID 参数返回文件 下面是 doGet 方法 Override protected void doGet HttpServletRequest request HttpServletR
  • 使用 Visual Basic 在 Windows 窗体中嵌入 DOS 控制台

    我设法从其他问题中找到一些数据 使我能够实现下一个代码 Imports System Runtime InteropServices Public Class Form1
  • 错误消息:“无法连接到 Gmail”

    有时我会从许多脚本的基于时间的触发器中收到此错误消息 我可以做些什么还是只是服务器端问题 这看起来确实像服务器端 但预计它偶尔会失败 我想你应该实施一个指数退避 http googleappsdeveloper blogspot com b
  • SQLite 数据库创建时自动增量附近的语法错误

    又是我 那个使用 SQLite net 的人 当我的表主键上没有自动增量时 我的代码可以正常工作 我想自动增量键 所以我像这样重建了表 using SQLite namespace VehicleTracks Models public c
  • Automapper 与 Dapper 的地图绘制对比

    这个问题是为了验证当前的实施在最佳实践和性能方面是否是正确的方法 到目前为止 在我之前的所有公司中 我一直在使用 Auto Mapper 将关系对象映射到域模型实体 并将域模型实体映射到 Dtos ORM 工具是实体框架 在我目前的公司中
  • 观看 OS 2 问题以设置图像

    我只想将图像添加到我的 WKInterfaceController 但是 Xcode 告诉我 在 Watch 上找不到名为 circle44 的图片 IBOutlet var cirlceImage WKInterfaceImage ove
  • JSON 模式:日期大于其他日期

    我有一个像这样的 json 模式 schema http json schema org draft 04 schema title Operation description The schema of an operation type
  • 如何管理故事板中的项目以添加展开/折叠 tableView 单元格的可能性

    我试图在我的 tableView 中创建通过单击展开和折叠各个单元格的能力 不考虑代码 我如何在情节提要中设置元素和约束 从某种意义上说 在我的单元格的内容视图中 我应该添加多少个 UIView 假设我想在展开单元格时将单元格的大小加倍 那
  • 使用 GD 调整图像大小和裁剪图像,同时保留纵横比

    我目前正在编写一个基于Uploadify 的上传器脚本 现在 我调整给定图像和水印的大小之一 这一切都运行良好 但我需要脚本来调整高度大小 然后裁剪宽度 以便长宽比不会混乱 到目前为止 这是我的代码 if fileExtension jpg
  • 列表的排列 - Haskell

    我想用 2 个列表创建所有可能的子组组合 这是一个执行此操作的函数 getCombinations a gt a getCombinations na do a lt na b lt na a b 如果将 abc 传递给此函数 它将返回 a
  • Julia 相当于 R 的 ?? (双问号help.search所有包)

    In R你可以搜索文档 https www r project org help html通过输入问号 或双问号 如何在 Julia REPL 的手册中搜索字符串 gt first No documentation for first in
  • 如何在 Spring Boot 中将多部分文件从一个服务传递到另一个服务?

    我想将多部分文件从一项服务传递到另一项服务 客户端 gt 服务1 gt 服务2 这显示错误 500 内部服务器错误 当前请求不是多部分请求 当我将文件从 Service1 传递到 Service2 时 客户端 gt Service2 当我直
  • Laravel 4 - unserialize():32 字节偏移量 0 处出错

    当我安装 Laravel 4 时 我收到此错误 ErrorException unserialize Error at offset 0 of 32 bytes C xampp htdocs blog laravel bootstrap c
  • Android N:在更新复选框首选项之前检查 DND 状态是否已更改

    我的应用程序将铃声模式设置为静音 但使用 Android N 我得到了java lang SecurityException Not allowed to change Do Not Disturb state 我按照这个步骤操作post
  • Flutter如何处理框内固定大小的图像?

    我是 Flutter 的新手 我喜欢它 但我对构建布局感到不舒服 我正在开发一个包含卡片列表视图的应用程序 每张卡片都位于容器内 并包含图像 具有固定的高度和宽度 和文本 我无法将图像正确放置在卡内 我希望图像覆盖盒子的宽度 谢谢 这是代码
  • 连接 Android 设备时 shmemBase_attach 失败

    我正在尝试将计算机上的 jdb 连接到 Android 设备上的进程 实际上是任何进程 但它根本不起作用 所以我使用的命令直接来自 Google ADB 文档 首先我做 adb forward tcp 3456 jdwp pid 然后我尝试
  • React PHP 如何处理异步非阻塞 I/O?

    React PHP 如何处理异步非阻塞 I O Nodejs 使用其事件队列来处理不同线程上的 I O 它使用 libuv 来实现此目的 PHP 中没有类似的东西 React 如何处理单线程上的非阻塞 I O 进程 React PHP 提供