棘轮php wamp -react/Zeromq-特定用户广播
注意:这是不是与使用MessageComponentInterface的问题.我改用WampServerInterface,所以这个问题与该部分有关.我需要一个带有代码示例和解释的答案,因为我可以看到这对其他人有帮助. 尝试为单个用户推动循环推动 我正在使用Ratchet和Zeromq的Wamp部分,目前我有一个工作版本的我正在尝试执行以下操作: Zeromq Server正在启动并运行,准备记录订户和未取消书 用户通过WebSocket协议在浏览器中连接 a loop 将数据发送到请求它的特定用户 当用户断开连接时,该用户数据的循环停止 我有积分(1)和(2)工作,但是我遇到的问题是第三个: 首先:如何仅向每个特定用户发送数据?广播将其发送给所有人,除非"主题"最终可能成为单个用户ID? 其次:我有一个很大的安全问题.如果我发送了哪个用户ID想要从客户端订阅的,似乎我需要的,那么用户可以更改另一个用户ID的变量及其数据被返回. 第三:我必
2 2023-05-30
编程技术问答社区
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 !连接客户端并接收响应时.
0 2023-05-28
编程技术问答社区
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
8 2023-04-20
编程技术问答社区
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( http://php.net/manual/manual/en/function .stream-set-blocking.php ) 其他选项包括编程类似于FSM的内容( state_machine );这使其能够随着进展的持续更新其当前状态;每次允许某些代码运行,然后将线程放在循环中的其他任何
14 2023-03-27
编程技术问答社区
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_dump
12 2022-10-27
编程技术问答社区
只从RabbitMQ中使用 react\stomp 摄取N条消息,分别对它们进行应答,然后退出
我正在使用带有 PHP react\stomp 的 RabbitMQ.我有两个队列 - 一个是“待办事项",另一个是“完成".消费者从“待办事项"中读取数据,完成其工作,确认消息,然后将其发布到“完成"队列. 有什么方法可以确保我只使用来自“todo"的 N 条消息(并单独确认它们)然后退出?主要原因是我们不希望有长时间运行的消费者,我们希望在 N 条消息后重新启动它们. 解决方案 您可以为目的地设置预取计数: 所有订阅的预取计数设置为无限制默认.这可以通过设置预取计数标头来控制订阅帧到所需的整数计数. https://www.rabbitmq.com/stomp.html 所以要只消费十条消息,添加标头 prefetch-count:10 到 SUBSCRIBE 框架. 您可以将 ack 模式设置为 client-individual 以进行逐个消息的手动确认.
286 2022-08-19
编程技术问答社区
React PHP获取POST数据
我正在尝试在 ReactPHP Web 服务器上运行一个简单的 Web 应用程序,但我不知道从哪里获取来自 HTML 表单的 POST 数据.服务器定义为: 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);
258 2022-08-09
编程技术问答社区
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
3184 2022-07-19
编程技术问答社区