问题标签 [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 回答
145 浏览

amphp - 超过 1k 并发 tcp 请求的 amphp 问题

我使用https://amphp.org框架创建了一个应用程序。它在 cronjob(每 5 分钟)的帮助下运行,向某些传感器(温度)发送并发请求,并保存所有响应。

多达约 1K 传感器一切正常。

当大约 30% 的请求增加到 1.5k 时,我收到以下消息:

连接到 tcp:// . . :502 失败:超时(10000 毫秒)

任何建议将不胜感激!

0 投票
1 回答
506 浏览

http - 带有使用代理的 AMPHP HTTP 客户端

我正在尝试将 AMPHP HTTP-Client 与代理一起使用,但我无法使其工作。

我正在使用他们 GitHub 中的示例。(https://github.com/amphp/http-tunnel/blob/master/examples/http-client-via-proxy.php

我必须下载 10 个 URL 并为每个 URL 使用不同的代理。当前的问题是它返回这种错误:

我们的代理服务器使用证书 (.crx) 进行操作。我不需要检查 SSL 是否有效,我只想跳过验证,所以我认为这些行可以满足我的需要(跳过验证),但它们没有......

这适用于卷曲:

这是我的代码:

当与 Http1TunnelConnector 而不是 Https1TunnelConnector 一起使用时,它会引发此错误:

0 投票
2 回答
435 浏览

php - Amphp:使用相同的连接运行许多异步循环(eventstore 客户端)

我正在使用使用 amphp 的 eventstore 客户端。我需要在我的应用程序中重用许多部分的连接。

所以我创建了一个连接提供者:

然后我在很多地方使用这个连接:

问题:似乎第一个请求还没有结束,但第二个循环已经开始了。未注释的睡眠没有任何影响!

但是最终创建了事件流,其中包含相关事件,因此第一个请求有效。

如果我启动一个连接然后关闭然后启动一个新连接,它就可以工作。但由于每个新连接的握手开销,它很慢。

我用 Amphp 的 WebSocket 库尝试了一个类似的例子,它成功了。你看有什么不对吗?

这是我对 websocket 的测试:

0 投票
0 回答
125 浏览

php - 如何使用 Artax 进行发布请求

我正在测试使用 phplaravel/lumen作为服务器端框架的能力。我有现有项目,新任务是同时提出多个请求。我找到了可以帮助我的 amphp/parallel 包。但是文档说使用 Artax (amphp/http_client) 作为 http 客户端来发出并行请求。但是 Artax 的 phpAmp\Http\Client\Request将字符串作为请求正文。你能帮我如何通过请求正文吗?

0 投票
0 回答
86 浏览

php - 如何使用 amphp/parallel 异步调用从数据库中获取数据和另一个函数来并行获取数据

amphp/并行

如何使用 amphp/parallel 异步调用从数据库或另一个函数中获取数据以并行获取数据

我在github上做了研究,但没有找到任何东西

0 投票
1 回答
429 浏览

php - AMPHP - 排队的任务多于池中可用的工人

我有一个项目,我将大量 .tif 图像转换为 PDF 文档。文件数达到数百万。

为了加快我使用 Amphp 的过程。由于使用 Imagemagick 转换图像的过程占用了一些 cpu 功率,我想限制并行运行的转换器进程的最大数量。

我的第一种方法有效,但如果我将文件排队而不是给一定数量的工作人员一个 x 文件数组,则可以改进。

这是我当前的代码,我尝试在其中复制示例

我的问题是,一旦我加入的任务数量超过了THREAD_COUNT任务数量,我就会收到以下 PHP 警告:Warning: Worker in pool exited unexpectedly with code -1并且没有创建任何 PDF。

只要我保持在最大池大小以下,一切都很好。

我在 Windows 10 和 amphp/parallel 1.4.0 上使用 PHP 7.4.9。

0 投票
1 回答
71 浏览

php - AMPHP 抛出无法捕获的 MultiReasonException - 这是一个错误吗?

作为 AMP Socket 连接调用的一部分,我MultiReasonException在 DNS 查找过程中遇到了问题。抛出的实际异常是一个 NX 域,这很好 - 查找是针对当前关闭的主机。问题是我无法捕获和处理异常 - 它最终在我能够捕获它的循环级别结束但此时它没有用。

我试图在一个简单的测试脚本中重现以在此处发布,但如果我这样做,它可以正常工作:

并将其包装在 try catch 中,我能够捕获 DNS 异常——它甚至不会抛出MultiReasonException. 我认为这与我的实际应用程序有很多“并发”的事实有关,这意味着循环实际上会在等待 DNS 请求失败时停止并执行其他操作(“推迟”dns 查找协程) . 由于某种原因,这似乎导致异常被包裹在 aMultiReasonException中(xdebug 中的 Mutli 中仅列出了 1 个异常)。更重要的MultiReasonException是,它并没有被扔到我进行连接调用的协程中,它只是最终被扔到了Loop::run调用中——这是真正的问题。我无法在这里处理异常,因为它不在调用上下文中,并且可能来自代码中的任何地方。

任何人都可以帮助阐明这一点,或者甚至为我指出正确的方向以进一步确定这一点吗?我完全没主意了。试图通过大量的协程和占位符函数来追踪这个东西是一场噩梦。您到底是如何通过 AMP 堆栈调试这些东西的?

0 投票
1 回答
142 浏览

php - amphp 库适用于 xampp,但不适用于我的虚拟主机

我想在数组中并行执行域。它可以工作,但只能通过 xampp 而不是在我的虚拟主机上。为什么?

我用这个:

https://github.com/amphp/parallel

代码:

错误代码如果我在我的虚拟主机上运行它:

池中的工作人员在 vendor/amphp/parallel/lib/Worker/DefaultPool.php 上的代码 -1 第 250 行意外退出 池中的工作人员在代码 -1 第 250 行上意外退出

致命错误:未捕获的 Amp\Process\ProcessException:无法在 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Internal/Posix/Runner.php:142 中列出打开的文件描述符 堆栈跟踪:#0 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Internal/Posix/Runner.php(88): Amp\Process\Internal\Posix\Runner->generateFds() #1 /kunden/559288_442 /webseiten/webhoster/parallel/vendor/amphp/process/lib/Process.php(108): Amp\Process\Internal\Posix\Runner->start('{ ('/usr/bin/ph...', '', Array, Array) #2 [内部函数]: Amp\Process\Process->Amp\Process{closure}() #3 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/amp/lib/ Coroutine.php(67): Generator->current() #4 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/amp/lib/functions.php(96): Amp\Coroutine->__construct(Object(Generator)) #5 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Process.php(110): Amp\call(Object(Closure)) #6 /kunden/4在第 202 行的 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/parallel/lib/Context/Process.php

0 投票
1 回答
71 浏览

php - AmPHP 缓冲区永远存在

我刚刚拿起 AmPHP,我正试图从我的 AmPHP http 服务器获取帖子正文,但是,它会一直持续下去(只是永远不会向我的客户发送回复)。
这是我目前正在使用的代码:

我已经测试了另一段不会永远运行的代码,但是当我使用那段代码时,我无法将我的身体置于以下函数之外onResolve

我也试过最后一点,但也只是返回null

编辑:做了更多的摆弄,这是我当前的(仍然没有功能的)代码(虽然为了简单起见,很多已经被剥离了):

0 投票
0 回答
56 浏览

php - 工作工人的数量少于最大池大小

再会。我使用 amphp 并行函数。我将最大池大小设置为 128 - 工作人员数量稳定在 128。我将其设置为 256 - 从启动到启动,我得到不同的工作工作人员数量值。但总是小于最大值。它取决于什么?