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

websocket - 棘轮事件循环被阻塞

我使用棘轮 php 创建了一个 Web 套接字连接。我连接了一个客户端,然后执行了一个查询(执行查询大约需要 20 秒),同时我尝试连接另一个客户端,我看到 Web 套接字连接处于挂起状态(仍在尝试切换协议) . 稍后,当初始请求的响应出现时,我看到服务器打印“新连接已建立”(已将此语句保留在我的 onOpen 函数中)。

如果 react php 的工作原理与 NodeJs 相同,那么即使处理需要大量时间,是否不应该建立连接?

为什么 web socket 连接因为后面的执行部分而被阻塞?

0 投票
1 回答
2717 浏览

php - 等待所有承诺在 React PHP 中完成

我有一系列的承诺。

只有在所有的承诺都给了我回应之后,我才想继续,无论它们是解决还是拒绝。我认为 all() 函数可以处理它,但它看起来只有在数组中的所有承诺都得到解决并且不考虑某些承诺的拒绝时才有效。

我可以使用什么功能??

示例:函数 getUser 返回一个 Promise 对象。当所有的承诺都给了我回应时,我想抓住触发器,无论承诺是解决还是拒绝。

array_push($this->users['users'], $this->userFetcher->getUser($userName));

谢谢 :)

0 投票
1 回答
173 浏览

php - 如何使用 Rachet 在一台机器上创建多个服务器

情况是我用这样的 shell 脚本启动了一个 Rachet 套接字服务器

我已经有一个使用 AngularJs Websocket 服务的客户端构建。到现在为止一切顺利。

问题 截至目前,您可以看到我只是在终端中手动运行此脚本,该终端在端口 8080 上运行此服务器。

但我想要实现的是创建一个用户生成的聊天室。

从某种意义上说,当用户访问 xdomain.com 时。他可以选择创建一个聊天室。他单击按钮,它将访问我的服务器。我的服务器应该为该用户创建一个新的套接字服务器并给他一个密码/链接。用户将此代码发送给他的朋友。

当他们的朋友访问 xdomain.com 时,他们会看到两个选项

1 - 加入房间(他们必须提供从他朋友那里得到的代码) 2 - 创建一个聊天室(这将与我上面描述的方式相同)

现在我不确定这个架构。是好/坏/可能/不可能。

一台 Rachet Socket 服务器能够处理多少个连接?

对于创建聊天室的每个请求,我的脚本都会在一个新的可用随机端口上创建一个新的 Rachet Socket 服务器。假设这个站点变得非常流行,我的 vps 是否能够在不同的端口上打开这么多套接字服务器?我有这么多端口可用吗?

还,

在单个聊天室(Socker 服务器)上,用户是否能够传输 Socket 服务器可以接收的媒体文件或文本消息?

谢谢

0 投票
1 回答
109 浏览

php - 从另一台机器连接到反应服务器

按照http://reactphp.org/的说明,我创建了一个服务器:

然后我在一个 IP 为 192.168.1.200 的 Linux 机器上启动它,它似乎正在运行:

为了测试它,他们说将http://127.0.0.1:1337/放在浏览器中,但机器没有浏览器。作为替代方案,我使用了 cURL,它实际上正在运行,但它只能作为127.0.0.1(我已关闭 iptables 进行测试,但没有帮助)访问。

输出:

ifconfig显示以下内容:

如何从另一台机器连接到这个反应服务器?

0 投票
1 回答
139 浏览

php - Azure WebApp 自定义 PHP 服务器

在 Azure WebApp 中是否有可能运行自定义 Web 服务器而不是 IIS?(amphp/aerys 或 reactphp/http)

我认为,使用 Node.js 是可能的,所以 PHP 应该有一些方法。

预期的行为是,我将使用我的自定义 PHP 服务器,它将监听某个端口,并且 IIS 仅将所有请求重定向到该端口。

但我不知道是否可以在 Azure WebApp 中运行长时间运行的应用程序,该应用程序将在某个端口上进行侦听。这个应用程序必须自动启动。

我可以使用 VM,但 Web 应用程序看起来更好。

0 投票
1 回答
1259 浏览

php - ReactPHP/Socket server - set connection timeout

I have TCP Socket server using react\socket.

Depending on received data from the client, it doing something, then it close connection with the client.

The problem is i can't understand how to make connection timeout, if the server have not received any data for a period of time, how to close connection?

I'm looking for same as i did with stream_socket_accept() using stream_set_timeout()

0 投票
1 回答
912 浏览

php - ReactPHP 在循环内阻塞

我正在尝试实现我的工人的并行执行,我正在使用ReactPHP它来帮助我。https://github.com/reactphp/react

但我没有得到我期望得到的行为。

设想:

我有三个工人。

fetch.php parse.php notify.php

fetch.php并且notify.php没有预先要求的条件来运行,因此它们可以并行运行并且应该首先运行。

parse.php需要等待fetch.php完成工作,然后它应该执行。

所以我有我的父脚本process.php,所有的魔法都会发生。

所以不要得到这个输出:

我正进入(状态

脚本等待解析完成,然后进入下一个通知任务。

所以我做错了,因为我第一次玩 ReactPHP,这可能是一些新手错误。

是我正在使用递归并且阻塞循环或其他问题的问题。

也许没有实施循环来解决我试图解决的这类问题?

0 投票
1 回答
328 浏览

namespaces - Cakephp 3:React/zmq 库命名空间

我正在编写有关使用此处提到的棘轮的基本教程http://socketo.me/docs/push

我为教程创建了一个完美运行的测试设置。但是,当我尝试将设置与 CakePHP 3 集成时,我遇到了问题。就像教程中提到的那样,棘轮和 ZMQ 服务器是独立的。只有以下代码需要移动到 CakePHP 3 控制器中:

此代码基本上将新数据提交到 ZMQ 队列以转发到棘轮。如果我将相同的 4 行放在 CakePHP 3 代码库之外的普通 PHP 文件中,它就可以工作。当我在 APP\Controller\SamplesController 中放置相同的四行时,它说找不到类 APP\Controller\ZMQContext。

CakePHP 3 文档提到通过 composer 安装的供应商库将通过自动加载器自动可用。我已经通过以下命令安装了 React\ZMQ 库:

我尝试通过以下命名空间访问该类,但它们都没有工作:

可能错过了 PHP 中的一些命名空间概念,但我的理解是,如果 ZMQContext 通过全局命名空间在普通 PHP 文件中可用,那么它也应该在 CakePHP 3 中通过 \ZMQContext 可用。

我有以下问题:

  1. 如何在我的 CakePHP 3 APP 中将数据推送到 ZMQ 队列?
  2. APP::path() 和 APP::classname() 似乎只适用于 CakePHP 3 应用程序中的类。如何检查特定供应商库类的路径?
  3. 如何正确自动加载供应商库类?(我不希望 require/require_once 它们,因为每个想要通过棘轮发布数据的控制器都需要这样做)
  4. 关于通过 \CLASSNAME 访问全局命名空间的假设是否错误?
  5. 我在 \ZMQContext 访问供应商库类的第二次尝试解析为 App\Controller\ZMQ。当它应该在根命名空间内尝试时,这怎么可能?
  6. ZMQContext 不是 react/zmq 库的一部分,这是否意味着它是 libzmq 的默认 php 绑定的一部分?
0 投票
1 回答
490 浏览

php - ReactPHP - 关闭断开的连接

我正在将 ReactPHP 用于 TCP 侦听器组件。该组件侦听传入连接并与它们交换数据。$connections 数组随着客户端与侦听器的连接/断开而更新。

如果客户端通过 telnet 连接,将发出“关闭”,以便我可以从 $connection 数组中删除关闭的连接。但是,一些连接到我的听众的设备也有问题。如果我关闭设备“关闭”将不会发出。我试图用定期定时器解决问题:

但似乎它不够可靠。即使客户端断开连接,函数 stream_get_meta_data 也会返回有效的元数据数组。

0 投票
1 回答
183 浏览

php - ReactPHP http server for each user, Is this a good idea?

ReactPHP http server for each user, Is this a good idea?

In my application:

  1. Each logged on user sends and receives data from server. In average one request per second.
  2. After server response, the server have some extra work to do, which is related to specific user.

I can simply build new ReactPHP http server for each user who logs, and release the server after the user log out.

Is this will work? Am i missing something ?