Php 使用ZMQ,我可以使用CLI将套接字绑定到端点,但不使用Apache2中的相同脚本。为什么?
以下是Php 使用ZMQ,我可以使用CLI将套接字绑定到端点,但不使用Apache2中的相同脚本。为什么?,php,Php,以下是流管理器类: class stream_manager { protected $context; public function __construct($user) { $this->context = new \ZMQContext(); } public function isPortSuitable(int $portNumber) { $socket = null; tr
流管理器类:
class stream_manager
{
protected $context;
public function __construct($user)
{
$this->context = new \ZMQContext();
}
public function isPortSuitable(int $portNumber)
{
$socket = null;
try
{
$socket = $this->context->getSocket(\ZMQ::SOCKET_REQ);
$socket->bind('tcp://127.0.0.1:' . $portNumber);
}
catch(\Exception $e)
{
/** */
}
finally
{
/** */
}
}
}
无论端口号如何,我都会得到一个ZMQSocketException:无法绑定已在使用的ZMQ:地址
但是,如果我从CLI执行以下脚本,我可以绑定到流管理器抛出的端口。我还成功地使用了web服务器上的以下脚本,使用了backticks
try
{
$context = new ZMQContext();
$socket = $context->getSocket(\ZMQ::SOCKET_REQ);
$socket->bind('tcp://127.0.0.1:8080');
}
catch(\Exception $e)
{
/** */
}
finally
{
try
{
/** */
}
catch(\Throwable $e)
{
/** */
}
}
当从CLI执行的脚本(或使用backticks
)将绑定到任何端点时,为什么我的实例方法不绑定到任何端点?也。。。这是在Docker容器中执行的,所以。。。这是在Docker容器中执行的