问题标签 [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 投票
2 回答
227 浏览

php - PHP Amp\Mysql 异步比本地阻塞 PDO 慢?

我正在使用Amp进行一些测试,并尝试了解它如何通过异步运行 SQL 查询来帮助加速它们。我认为我做错了什么,因为这个测试文件的结果非常令人失望,而不是我所期望的。有什么我做错了吗?

下面的代码给了我这样的结果,第一个数字是 Amp\Mysql 并且由于某种原因它要慢很多:

PHP代码:

0 投票
1 回答
106 浏览

php - amphp 自动加载类未按预期工作

我正在尝试在使用 amphp 的工作人员中使用自定义类,但它似乎不起作用。下面的类已经使用 composer 自动加载。请帮我解决这个问题。我的代码如下:

类(这实现了他们文档中提到的任务):

使用 amphp 文件分配使用上述类的工人:

运行此脚本会给我以下输出:

[26-May-2021 01:23:11 UTC] PHP 致命错误:Uncaught Amp\Parallel\Worker\TaskFailureError: Uncaught Error in worker with message "User-defined functions must be autoloadable (that is, defined in a file autoloaded by作曲家);无法加载函数“testMe”和代码“0”;使用 Amp\Parallel\Worker\TaskFailureError::getOriginalTrace() 获取 /home/xxxx/vendor/amphp/parallel/lib/Worker/Internal/TaskFailure.php:60 中工作程序中的堆栈跟踪

非常感谢您的阅读!

0 投票
1 回答
123 浏览

php - PHP 全局作用域和 Amp 异步并行执行

我正在使用AMP ParallelFunctionsAMP Promise 等待在 PHP 中创建异步执行。这个想法是同时调用多个 HTTP 端点并等待它们全部解决。

代码看起来像这样:

该函数$api->call_api位于不同的文件上,并使用全局常量中的 Bearer 令牌,PHP Warning: Use of undefined constant API_TOKEN每次异步进程调用它时都会抛出错误(它作为同步进程运行正常)

我怀疑发生这种情况parallelMap是因为 PHP 工作者无法访问API_TOKEN定义的相同范围。

任何想法如何让 wait 和 parallelMap 识别由定义的变量define('API_TOKEN', 'my-value')

0 投票
1 回答
265 浏览

php - AMP Parallel:无法打开流:ClassLoader.php 中打开的文件过多

在使用 AMPHP 库执行线程工作任务时,我突然收到警告和错误:

这以前工作正常,最近开始出现问题。

使用:

  • PHP 7.4.21 (cli)
  • 苹果系统
  • “amphp/并行函数”:“^1.0”
0 投票
1 回答
52 浏览

php - amphp:循环中的承诺

对不起,伙计们,但我现在花了几个小时有点发疯了,只是不知道出了什么问题。

所以我有一个下载类,它需要将下载分成块,然后将每个块作为一个单独的请求请求,这一切都很好,我有点无处可去,我的承诺是我的产量永远不会返回任何东西,但也不会抛出任何错误。

它应该做的是遍历分解的块数组,然后为活动块执行承诺,等待完成,然后继续。

这是我在代码库中的测试:

我尝试了至少 20 种变体,但它不起作用,整个代码在 Loop::run 中运行

我知道如何通过 Loop::repeat 手动分配任务来解决它,但这并不是最好的方法。

我会很感激您的帮助,也许我只是对正在发生的事情视而不见或误解了某些事情。

0 投票
1 回答
60 浏览

php - 每次进行更改时,我真的必须重新启动服务器吗?

我想使用 AMP PHP 并创建一个项目。所以我从 github 上的一个例子开始,我可以看到 hello world。

现在,如果我更改我的代码,我必须每次重新启动服务器。但这不是它应该如何工作的吗?

我是否必须运行某种文件监视程序,每次更改代码时都会重新启动服务器?或者 AMP PHP 服务器应该作为代理工作,然后像 NGINX 服务器那样调用 php-fpm 实例?如果是这样,我可以使用没有循环的异步库吗?(因为循环在服务器上)

框架如何工作?看来我在这里理解有问题。

此致

0 投票
0 回答
8 浏览

php - 具有循环内容的 websocket 可能需要异步

我正在尝试在 php 中创建一个聊天解决方案,该解决方案将允许通过 websocket 接收消息,但我遇到了一个问题,即由于检查新消息的代码,连接的客户端将占用主进程成为一个循环(我正在使用 rabbitmq 并监听队列中的新消息)。

是否有一个 php 构造可用于运行本质上与主进程异步循环的代码。

主要过程将是一个脚本,该脚本为客户端托管 websocket 解决方案,目的是从客户端获取消息,同时将传入消息转发给客户端。Rabbitmq 通过队列构造处理消息,并像下面这样使用,其目的是 $ec->process($user, $content) 向客户端发送消息

将以下代码添加到连接的函数会阻止与客户端之间的任何进一步通信,因此希望将其移动到线程上或让它异步运行

据我所知,大多数满足异步函数的库将等待返回或完成事件,在以下情况下,应用程序不关心响应,尽管它的目的只是将队列上的任何新消息依赖于用户..

我尝试过使用 spatie,但感觉目标是返回的响应,它看起来从来没有像正在执行的代码。

像 amphp 这样的东西是否能够适应这种情况,有人可以推荐其他东西吗,我的 php 版本是 7.2 我不相信线程是要走的路,如果它将来会被贬低并且可能会带来性能问题,

如果有人对基于 PHP 的聊天解决方案有经验或其他建议,我不会使用任何特定的东西,该解决方案不需要迎合许多用户。

我使用它作为后端 websocket 解决方案 https://github.com/ghedipunk/PHP-Websockets

0 投票
0 回答
6 浏览

php - 将 Amphp 与 Magento 等框架一起使用

我正在尝试在自定义模块中将 Amphp Parallel 函数与 Magento 框架一起使用。

运行上述代码时我遇到的问题是

Magento 框架是使用 composer 自动加载的。所以我不知道为什么它不能初始化对象管理器。