问题标签 [amphp]

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 回答
673 浏览

php - 如何在 amphp/parallel Amp\Loop 中调用 worker CallableTask 中的类方法?

我正在使用 Amp\Loop 并想知道使用 $worker->enqueue(new CallableTask()) 中的参数调用类方法的正确方法是什么。
这是一个例子:

0 投票
2 回答
527 浏览

reactphp - 如何向 ReactPHP/Amp/Swoole/etc 发送消息。来自 PHP-FPM?

我正在考虑制作一个工作脚本来处理我的服务器上的异步任务,使用诸如 ReactPHP、Amp 或 Swoole 之类的框架将作为服务永久运行(我还没有在这些框架之间做出选择,所以解决方案涉及任何这些都是有帮助的)。

我的 Web 端点仍将照常由 Apache + PHP-FPM 管理,我希望它们能够将消息发送到永久运行的脚本,以使其知道异步作业已准备好尽快处理。

来自 Web 端点的伪代码:

您通常如何处理从 PHP-FPM 到这些框架中永久运行的脚本的通信?您是否设置了 TCP / Unix Socket 服务器并实现了自己的消息传递协议,或者是否有现成的解决方案来解决这个问题?


注意:如果您想知道,我不打算使用第三方消息队列软件,因为我希望将异步作业存储为数据库事务的一部分(整个事务成功,包括提交待处理作业,或者整个事务被丢弃)。这是我保证不会丢失任何工作。如果在最坏的情况下,无法将消息发送到正在运行的服务,则可能稍后仍会从数据库中检索丢失的作业。

0 投票
1 回答
246 浏览

php - 如何使用 Amphp 捕获 php websocket 断开的 TCP 连接异常?

这是连接仍然存在时我正在运行的当前 WebSocket 循环。但是连续连接11个小时后,我收到了异常

"exception":"[object] (Amp\\Websocket\\ClosedException(code: 1006): The connection was closed: Client closed the underlying TCP connection at ...

如何检查关闭的连接或异常本身?,这样我就可以正确结束脚本逻辑而不会突然失败。

我正在使用这个 Amphp Websocket:https ://github.com/amphp/websocket-client

谢谢!

0 投票
2 回答
114 浏览

php - mysqli 中是否存在不适合与 AMP 或 ReactPHP 一起使用的限制?

我已经看到诸如amphp/mysql和Friends -of-reactphp/mysql 之类的库实现了低级 MySQL 协议,并且不依赖任何内置扩展。

鉴于mysqli 支持异步查询,这些异步库有什么理由不能基于mysqli

最初被问到为什么 amphp/mysql 不是基于 mysqli 的?(关闭)。

0 投票
2 回答
1684 浏览

php - Amphp 并行是如何工作的?

我正在阅读有关 amphp 的内容,但我对并行有疑问

示例代码:

这段代码是全部运行 curl,还是等待 1 执行另一个?

0 投票
0 回答
239 浏览

php - 找不到类放大器

我是 amphp 的新手,我想先试试这个非常简单的代码。我下载了带有 composer for windows 的 amphp 并保存了在我的项目文件夹中创建的所有文件夹。

然后我的代码是:

但我总是得到'致命错误:未捕获的错误:找不到类'Amp\Http\Client\Request''

有什么建议吗?

我使用带有 php 7.0 的 wamp 本地服务器

另外,之后,我需要yield所有的代码......

0 投票
0 回答
626 浏览

php - 将 Amphp 与用户定义的函数并行使用时出错

我正在尝试使用 Worker\enqueueCallable 调用用户定义的函数。
我已将该函数放在一个单独的文件中,并使用 composer 来自动加载它。

我得到了错误:

致命错误:未捕获的类型错误:传递给 Amp\Parallel\Worker\enqueueCallable() 的参数 1 必须是可调用的,给定字符串”

我的文件夹结构

在caller.phpfuncs.php中都使用了命名空间应用程序

然后在 composer.json 中使用以下代码段并使用composer dumpautoload -o

main.php我调用caller.php调用funcs.php中定义的函数

函数.php

调用者.php

主文件

我正在使用 Windows-10、WAMP 服务器和 PHP 版本 7.3.5。

0 投票
1 回答
334 浏览

php - 使用 Amp\Websocket 从打开的流连接中获取 websocket ping?

我在这里使用自述文件示例:

https://github.com/amphp/websocket-client/blob/master/README.md

问题:while 循环只会在通过流发送消息时运行,没有消息,什么都不会发生,因为它处于空闲模式等待。

解决方案:如何接收 ping 或在 ping 上运行 while 循环,并且仍然收集消息?

例如,我想控制检查一些信息,(例如套接字应该保持打开)但是,它只能检查当消息通过流时,这会限制脚本,因为它只会在何时执行有一个活动,因此如果没有发送任何信息,则永远等待。

Ping 是基于 RFC 的 Web 套接字中的标准:https ://www.rfc-editor.org/rfc/rfc6455

Rfc6455Connection连接类中,有 ping,但没有关于如何访问或直接使用它的文档。

在 ping 上运行 while 循环并检查是否同时有消息会很酷,这可能吗?

0 投票
0 回答
354 浏览

php - 如何在不使用任何扩展的情况下在 php 中并行运行方法?

是否可以在不使用pthread或之类的任何扩展的情况下并行运行两种方法pcntl

我尝试了Symfony/Process,但似乎我只能将它用于 php cli 编程。

我的要求是php web application。我发现amphp/parallel说它无需任何扩展即可工作。我尝试了以下示例。虽然我不知道该库是否提供真正的并行功能或其他类似排队任务的功能?因为它在下面评论“没有任何扩展并行处理是不可能的”。

在我尝试之前,amphp/parallel我想确定我找到的图书馆是否适合我的工作。假设我想并行运行两个方法 test1() 和 test2() 并在下一行使用这两个方法的结果。

0 投票
2 回答
128 浏览

php - 如何在php中将输出打印到两个不同的终端?

我正在使用 amphp/parallel-functions并行for loops运行两个。我想知道如何查看并行打印的实时输出?我正在考虑打印到两个不同的终端。有可能吗?如果不是,我如何跟踪并行或顺序运行的输出?

当前输出似乎是连续的

注意我使用的是mac,这纯粹是为了在我的本地测试。