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? 的相关文章

  • 是否必须配置 PHP 才能通过 PHP 扫描每个目录的配置 INI 文件(即我的情况下的 .htaccess 文件)?

    我在用着Windows 10 家庭单语言 64 位操作系统在我的机器上 我已经安装了最新的副本XAMPP服务器在我的机器上附带PHP 7 2 7 我从 PHP 手册中阅读了以下页面 扫描目录 https secure php net man
  • 按通用值对值进行分组:userid 和 ipaddress

    我正在解决数据库中的一个问题 我正在尝试查找使用多个帐户的用户 我有一个用户 ID 和使用的 IP 地址的列表 如下所示 用户 ID IP 地址 1 IP 地址 13 2 IP 地址 23 1 IP 地址 12 4 IP地址56 9 IP
  • 通过多个回调优雅地传递“点击事件”

    当未登录的用户单击给定的按钮时 我想停止该事件 收集他的 oauth 收集他的电子邮件 如果我没有 然后执行该事件 我想用 javascript 来做所有事情 因为这会让事情变得更加简单 这就是我执行它的方式 我有两个问题 有没有更优雅的方
  • 自定义 WP 主题时,我应该将导航栏放在“”标签之前还是之后?

    我正在通过制作子主题来自定义 WP 主题 我将 Bootstrap 中的导航栏放入子主题目录中的 header php 文件中 但是 我不确定在哪里放置导航栏代码 我可以把它都放在前面and之后标记成功 例如 无论我选择哪一个 导航栏都显示
  • 为什么我不能在 TCPDF 表中使用 č,ć,đ 图表?

    我正在为我的网站构建一个 tcpdf 文件 该 tcpdf 文件中有一个包含一些数据的表格 但我无法使该章程正常工作 对于编码 我使用 windows 1250 宪章女巫不起作用 我已经尝试过 utf 8 但仍然没有得到这个章程 tcpdf
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa
  • SMTP 配置在生产中不起作用

    我正在尝试在提交表单时发送电子邮件 我正在使用 PHPMailer 使用以下配置发送邮件 mail new PHPMailer mail gt isSMTP mail gt Host mail example in mail gt Port
  • 在值中包含换行符

    我有一个 Word 模板 其中 php 代码中定义了值 在PHP代码中 document gt setValue Value1 value1 在word模板中 Value1 如何将包含两个值之间的断线的值包含在单词的值中 Replace n
  • PHP - 获取base64图像字符串解码并保存为jpg(生成空图像)

    嗨 我实际上是通过 ajax 发送一个 base64 图像字符串到一个 php 脚本 该脚本只是解码字符串并将内容保存为 jpg 文件 但结果是一张空图像 这怎么可能 PHP脚本 uploadedPhotos array photo 1 p
  • zip 文件的校验和

    我目前正在开发一个工具 它上传一组文件 然后使用 md5 校验和将文件与上一批上传的文件进行比较 并告诉您哪些文件已更改 对于常规文件 这工作正常 但某些上传的文件是 zip 存档 即使其中的文件相同 它们几乎总是会发生变化 有没有一种方法
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 如何通过php的require()或include()函数传递变量?

    当我使用这个时 require diggstyle code php page page no 警告是 无法打开流 第 198 行 C xampp htdocs 4ajax gallery core php 中没有错误 错误是 Failed
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • 使用 XSLT 将 XML 转换为 SQL

    由于我无法控制的原因 我将获得一个 XML 文件和一个 XSLT 文件 该文件可以将 XML 文件转换为 SQL 代码或错误 现在让我们假设我们可以信任提供 XML 文件的人不会在 XML 中包含危险的构造 我什至不知道是否应该使用 Sim
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • phpunit测试调用其他需要mock的类方法的方法

    我正在尝试创建一个非常标准的单元测试 在其中调用一个方法并断言它的响应 但是我正在测试的方法调用同一类中的另一个方法 该方法做了一些繁重的工作 我想模拟该方法 但仍按原样执行我正在测试的方法 仅使用从调用另一种方法返回的模拟值 我简化了示例
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库

随机推荐

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

    我知道以前有人问过这类帖子 但他们的水平显然比我想象的要高 读完他们的帖子后我仍然不明白 所以我决定从这里再次发布这个问题 我正在学习使用管道进行多进程通信 我遇到了这个名为 错误文件描述符 的错误 我不明白为什么我的代码中会出现此错误 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 提供