问题标签 [reactphp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
434 浏览

reactphp - ReactPHP 每个循环运行两次

我正在尝试学习现在的技术——reactPHP。但我堆满了启动脚本。我稍微编辑了一下,但我有问题,如果我调用反应循环,脚本会执行两次。

我有这个代码:

如果我调用http://localhost:1337/react/index.php我会进入 data.txt 这个

我只期待一个值。

0 投票
0 回答
456 浏览

php - 通过 WebSocket 进行身份验证

我正在使用 Ratchet(基于 ReactPHP)来托管需要用户 Oauth 令牌才能连接到 Twitter 的 WebSocket 服务器。我应该如何安全地对用户进行身份验证?

0 投票
2 回答
2751 浏览

php - reactPHP 承诺同步执行

我正在尝试使用 reactPHP 实现类似 js 的承诺。但是由于某些原因同步执行的方法,end_at只有在 promise 解决后才打印。

代码:

0 投票
1 回答
458 浏览

php - Reactphp无法获取流上的总数据

我正在使用reactphp库,并且正在使用发送不同大小的包的设备。我的问题是当我得到数据时

我只得到第一个包裹的一部分。有没有办法一直等到设备发送所有数据?

在这里,在wireshark 上捕获最后一个包是我无法通过react 得到的包。

0 投票
1 回答
153 浏览

php - ReactPHP libevent 和 socket_pair 抛出错误

我有一个问题,然后我将 ReactPHP 事件循环与 stream_socket_pair 一起使用。

使用 StreamSelect 循环它可以完美地工作,但后来我尝试将它与 LibEvent 扩展一起使用,我得到了无限的错误流:

重现此错误的最少代码

0 投票
1 回答
95 浏览

php - 在运行服务上写入带有日期的日志文件

我用 reactphp 创建了一个服务,它运行并做了一些事情。它作为守护进程启动,因此所有输出都应记录在文件中。此日志文件应命名为'foo-log-file-$(date "+F")'。我想每天都有一个日志文件。

问题:

如前所述,脚本作为服务运行,不会停止。因此,脚本的起始调用只进行一次。

因此,从此脚本打印到控制台的所有内容都保存到文件中,但文件仅在调用时使用日期字符串创建,并且不会使用新日期更新。

问题:

是否可以在不在 php-script 中编写日志逻辑的情况下解决这个问题?我可以用 bash 处理这个要求吗?

0 投票
1 回答
238 浏览

php - 在不活动一段时间后在 PHP CLI 脚本中运行函数

我使用 Symfony2 和RabbitMqBundle创建了一个将文档发送到 ElasticSearch 的工作程序。以一对一的速度索引文档比使用 ElasticSearch 批量 API 慢得多。因此,我创建了一个缓冲区,以千为一组将文档刷新到 ES。代码看起来(有点简化)如下:

这一切都很好,但有一个小问题。队列以不可预测的速度充满了消息。有时 100000 在 5 分钟内,有时不是一个小时。例如,当有 82671 个文档排队时,最后 671 个文档在收到另外 329 个文档之前不会被索引,这可能需要几个小时。我希望能够做到以下几点:

警告:科幻代码!这显然行不通:

现在,我知道 PHP 不是事件驱动的局限性。但这是 2015 年,并且有像 ReactPHP 这样的解决方案,所以这应该是可能的吧?对于 ØMQ 有这个功能。什么是适用于 RabbitMQ 或独立于任何消息队列扩展的解决方案?

我怀疑的解决方案:

  1. crysalead/code。它使用declare(ticks = 1);. 我不确定这是否是一种高效且可靠的方法。有任何想法吗?
  2. 我可以运行一个 cronjob,每 5 分钟向同一个队列发布一条“FLUSH”消息,然后在收到此消息时显式刷新缓冲区,但这会作弊。
0 投票
0 回答
80 浏览

php - ReactPHP 和 EOT

当我关闭连接到 reactPHP 套接字的终端时,我会收到许多data事件,其中数据由EOT符号(十六进制04)组成:

忽略它们的正确方法是什么?它们是无用的,因为我可以通过close连接本身的事件对关闭的事务做出反应。

0 投票
0 回答
214 浏览

promise - Guzzle 和 react Promise 导致无限循环

我使用Guzzle 6 调用异步请求,然后使用React Promise/Deferred和 Event loop ,然后使用php-react-block通过解析获得结果。

首先我发送http请求如下:

在我如下调用此方法后

但是当我调用 Clue\React\Block\await($requestPromise, $loop) 时,系统无限循环并且无法解决任何承诺。我还添加了 queue->run() 方法来运行相关事件(LibEvent)的方法。但是系统仍然无限循环。

为什么系统无限循环?

感谢您的帮助

0 投票
0 回答
302 浏览

php - CakePHP 数据库会话处理程序和反应式编程

看下面的代码:

如果您执行第 1 步操作,休眠 5 秒,然后执行第 2 步,结果为“失败”。这意味着在我调用 write 方法的那一刻不会持久化会话变量。

如果你看一下 CakePHP DatabaseSession 类,你会发现:

这只是问题的一个例子。我在浏览器中将 ReactPHP 与 CakePHP 和 EventSource 一起使用。当您发送请求时,PHP 会在脚本完成之前多次释放套接字向浏览器发送信息。如果用户点击到第二步,而第一步还没有完成,那么 step2 会抛出一个错误,因为它无法读取会话变量。

我认为 PHP 只在 session_write_close 执行时保留会话。

我该如何解决这个问题?

是否可以在脚本完成之前保存会话?