PHP 使用 2 个 React 连接器从原始 tcp 套接字读取数据并通过 WebSocket 客户端发送数据
在这里我要做的事情: (套接字服务器:9006)(WebSocket客户端) - >(:8080 WebSocket Server) 我想从套接字服务器读取数据, 编辑一些内容,然后发送到WebSocket服务器. 我必须能够同时读取来自Webocker Server的数据 我设法使用套接字服务器的1个React连接器和Websocket服务器的1个Ratchet连接器设法连接到两个服务器: $loop = React\EventLoop\Factory::create(); $connector = new React\Socket\Connector($loop); $connector->connect('192.168.0.1:9006')->then(function (React\Socket\ConnectionInterface $connection) use ($loop) { $connection->pipe(new React\
16 2024-04-23
编程技术问答社区
CentOs 6, Php7.1, libevent, nginx 返回 502
我正在将Laravel Web应用程序从PHP5.6升级到PHP7.1,这使我升级了Libevent模块.应用程序是基于React库的异步ANS. 所以我以安装结尾:php 7.1.12,libevent:2.1.8 + expressif/pecl-event-libevent.我从Nginx有稳定的" 502 BAD GATEWAWAY".没有libevent(ReactStreamloop)或php 5.6 + libevent:1.4工作正常. 请求土地index.php,稍后发生了一些事情,在开始应用程序内. nginx日志: 2017/11/24 10:41:24 [错误] 24985#0: *7 recv()失败(104:连接重置peer的连接重置),从上游阅读响应标头,客户端:14.183.16.180,服务器,服务器:173.199 .117.122,请求:" get/http/1.1",上游:" fastcgi://127.0.0.1:9000",主
6 2024-03-18
编程技术问答社区
React PHP如何处理异步非阻塞式I/O?
反应php手柄如何使用异步非阻滞i/o? nodejs使用其事件队列,该事件队列在不同的线程上处理I/O.它为此使用了libuv.与PHP一样,没有类似的东西,如何在单个线程上处理非阻滞I/O过程? 解决方案 React PHP提供了应用程序的主要事件循环;您仍然需要以非阻滞方式编写代码,因为它们都在一个线程上.使用PHP的可能解决方案与我确定大多数PHP开发人员都习惯了……尽管React PHP提供了主要循环;大部分React PHP库是插座/流/Promise/等的实现.这些都有所有使用的方法来实现对I/O的非阻滞访问;通常通过使用stream_set_blocking( .stream-set-blocking.php ) 其他选项包括编程类似于FSM的内容( state_machine );这使其能够随着进展的持续更新其当前状态;每次允许某些代码运行,然后将线程放在循环中的其他任何内容上.实质上是实现自己的时间 - 习惯( time_slice ) 另一
4 2024-03-18
编程技术问答社区
Guzzle vs ReactPHP与AMPHP的并行请求
: 有什么区别 guzzlehttp reactphp amphp 它们是如何不同的,与之使用的典型用例? 解决方案 这些主要区别是Guzzle是HTTP客户端,而AMP和ReactPHP是通用异步/事件循环库.这两者都根据他们提供的核心事件循环提供HTTP客户端.那是 amphp/artax and reactphp/http-client . 现在,这些和guzzle之间的区别在于,这些可以同时执行不是HTTP请求的其他事情.也就是说,因为用户对事件循环具有完全控制,并且可以注册自己的I/O观察者和计时器,而Guzzle使用的事件循环则隐藏在用户内部卷发中. 如果您只想提出一些并发的HTTP请求,则该决定主要归结为您喜欢的API,并且可能会考虑性能.如果您想同时执行其他I/O相关的事情,请使用AMP或ReactPHP.如果您想流式传输身体,我建议也反对使用guzzle. 其他解决方案 嘿,hear reactphp核心团队成员. ReactP
20 2024-03-18
编程技术问答社区
ReactPHP真的是异步的吗?
我一直在对ReactPHP进行一些测试,因为它看起来很棒.我已经使用以下 react/socket 代码,对于简单的套接字. $loop = React\EventLoop\Factory::create(); $socket = new React\Socket\Server($loop); $socket->on('connection', function ($conn) { echo 'New client !'; $conn->on('data', function ($data) use ($conn) { $conn->write("Wow, some data, such cool\n"); $conn->close(); }); }); $socket->listen(1337); $loop->run(); 直到这一点,还没有问题.服务器显示New client !连接客户端并接收响应时.
8 2024-03-18
编程技术问答社区
只从RabbitMQ中使用 react\stomp 摄取N条消息,分别对它们进行应答,然后退出
我正在使用PHP React \ Stomp的RabbitMQ.我有两个队列 - 一个是"待办事项",另一个是"完成".消费者从" todo"中读取,完成工作,ack邮件,然后将其发布到"已完成"队列中. 是否有任何方法可以确保我只消耗n消息中的n消息(并单独使用)然后退出?这样做的主要原因是我们不想拥有长期运行的消费者,我们希望在n个消息后重新启动它们. 解决方案 您可以为目的地设置预摘要计数: 所有订阅的预取计数设置为无限 默认.这可以通过设置预摘要标头来控制 在订阅所需整数计数的框架上. https://www.rabbitmq.com/stomp.htomp.html 因此,仅消耗十条消息,请添加标题 prefetch-count:10 到SUBSCRIBE框架. 您可以将ACK模式设置为client-individual,以获取消息手册确认.
14 2024-01-26
编程技术问答社区
Cakephp 3:React/zmq库命名空间
我正在研究有关此处提到的棘轮的基本教程,我已经为教程创建了一个完美效果的教程的测试设置.但是,当我试图将设置与CakePHP 3集成时,我会遇到问题.棘轮和ZMQ服务器是独立的,只是教程中提到的方式.只有以下代码需要进入cakephp 3控制器: $context = new ZMQContext(); $socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'my pusher'); $socket->connect("tcp://localhost:5555"); $socket->send(json_encode($entryData)); 此代码基本上将新数据提交给ZMQ队列以转发到棘轮.如果我将相同的4行放在cakephp 3代码库外的普通PHP文件中,则可以使用.当我在App \ Controller \ SamplesController中放置相同的四行时,它说class app \ controller \ zmqcont
28 2023-12-26
编程技术问答社区
ZMQ REP REQ-发送接收不工作
我的Websocket服务器启动和运行,为了自己的使用,我想在执行静态PHP脚本时返回连接的列表. 我的php脚本pull.php: $context = new ZMQContext(); $socket = $context->getSocket(ZMQ::SOCKET_REQ); $socket->connect("tcp://localhost:5552"); $socket->send('data'); $test = $socket->recv(); var_dump($test); 然后在我的服务器脚本上:
10 2023-12-26
编程技术问答社区
Ratchet PHP WAMP-React / ZeroMQ-Specific用户广播
注意:这是不是与使用MessageComponentInterface的问题.我改用WampServerInterface,所以这个问题与该部分有关.我需要一个带有代码示例和解释的答案,因为我可以看到这对其他人有帮助. 尝试为单个用户推动循环推动 我正在使用Ratchet和Zeromq的Wamp部分,目前我有一个工作版本的我正在尝试执行以下操作: Zeromq Server正在启动并运行,准备记录订户和未取消书 用户通过WebSocket协议在浏览器中连接 a loop 将数据发送到请求它的特定用户 当用户断开连接时,该用户数据的循环停止 我有积分(1)和(2)工作,但是我遇到的问题是第三个: 首先:如何仅向每个特定用户发送数据?广播将其发送给所有人,除非"主题"最终可能成为单个用户ID? 其次:我有一个很大的安全问题.如果我发送了哪个用户ID想要从客户端订阅的,似乎我需要的,那么用户可以更改另一个用户ID的变量及其数据被返回. 第三:我必
14 2023-12-26
编程技术问答社区
React PHP获取POST数据
我正在尝试通过ReactPhp Web服务器运行一个简单的Web应用程序,但是我无法弄清楚从HTML表单中获取发布数据的何处.服务器定义为: include 'vendor/autoload.php'; register_shutdown_function(function() { echo implode(PHP_EOL, error_get_last()), PHP_EOL; }); $loop = React\EventLoop\Factory::create(); $socket = new React\Socket\Server($loop); $http = new React\Http\Server($socket); $http->on('request', function(React\Http\Request $request, React\Http\Response $response) { print_r($request); $
24 2023-12-02
编程技术问答社区
ReactPHP/Socket服务器设置的连接超时
我使用react \ socket的TCP插座服务器. 取决于从客户端收到的数据,它做某事,然后与客户关闭. 问题是我不明白如何进行连接超时, 如果服务器在一段时间内没有收到任何数据,则如何关闭连接? 我正在使用stream_set_timeout()() 寻找与stream_socket_accept()相同的 listen(2222); $socket->on('connection', function ($conn) { $conn->on('data', function ($data) use ($conn) { if (substr($d
20 2023-09-06
编程技术问答社区
PHP应用程序中的Guzzle池
我试图在PHP中使用Guzzle池.但是我很难处理异步请求.以下是代码片段. $client = new \GuzzleHttp\Client(); function test() { $client = new \GuzzleHttp\Client(); $request = $client->createRequest('GET', 'http://l/?n=0', ['future' => true]); $client->send($request)->then(function ($response) { //echo 'Got a response! ' . $response; return "\n".$response->getBody(); }); } $res = test(); var_dum
18 2023-06-17
编程技术问答社区
ReactPHP是真正的异步吗?
我在反垃圾邮件上做了一些测试,因为它看起来很棒,我用反应/套接字,a测试简单的套接字服务器. $loop = React\EventLoop\Factory::create(); $socket = new React\Socket\Server($loop); $socket->on('connection', function ($conn) { echo 'New client !'; $conn->on('data', function ($data) use ($conn) { $conn->write("Wow, some data, such cool\n"); $conn->close(); }); }); $socket->listen(1337); $loop->run(); 直到这里,没问题.服务器在连接客户端时显示New client !,并且客户端收到响应. 但我完成了一个新的测试,在dat
3202 2022-07-19
编程技术问答社区