在Windows 10和php7.2上尝试使用React \ ZMQ时遇到问题。我进行了一些研究,并评估了如何在apache上安装ZMQ扩展的方式,但是没有错。
问题是,如果从浏览器访问套接字,则套接字不会推送任何内容,并且不会给出任何错误日志,但是从CMD可以正常工作
但是通过CLI和浏览器,相同的代码在Linux上可以正常工作。
在Linux上,仅安装php_zmq并没有改变任何东西,而Windows也是如此。
有很多类似的问题,但是并没有给我解决方案,我在php.ini中添加了php_zmq.dll
,将php_zmq.dll
存储在php/ext
目录中,并存储了libzmq.dll
目录中的php
,并且我已经检查到phpinfo,ZMQ扩展名已顺利加载。
这是代码
//push.php
<?php
require './vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
$context = new React\ZMQ\Context($loop);
$push = $context->getSocket(ZMQ::SOCKET_PUSH);
$status = $push->connect('tcp://127.0.0.1:5555');
$push->send("test");
$loop->run();
?>
//pull-server.php
<?php
require 'vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
$context = new React\ZMQ\Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5555');
$pull->on('error', function ($e) {
var_dump($e->getMessage());
});
$pull->on('message', function ($msg) {
echo "Received: $msg\n";
});
$loop->run();
?>
我的期望是,从CMD(php pull-server.php)运行pull-server.php并从浏览器访问push.php(例如:localhost / project / push.php),然后推送一些数据发送到CMD中的pull-server.php。