我正在使用 PHP 和 ZMQ 绑定在 linux 中运行 apache。为每个页面加载运行此代码时,它工作正常:
$_SESSION['ZMQcontext'] = new ZMQContext(1);
$_SESSION['req'] = new ZMQSocket($_SESSION['ZMQcontext'], ZMQ::SOCKET_REQ);
$_SESSION['req']->connect("tcp://localhost:30000");
// Set maximum wait time on receive to 250 milliseconds
$_SESSION['req']->setSockOpt(ZMQ::SOCKOPT_RCVTIMEO, 250);
但后来我认为我不应该创建一个新的 ZMQ 上下文并为每个页面加载连接套接字,所以我这样写:
if(!isset($_SESSION['ZMQcontext'])) {
$_SESSION['ZMQcontext'] = new ZMQContext(1);
}
if(!isset($_SESSION['req'])) {
$_SESSION['req'] = new ZMQSocket($_SESSION['ZMQcontext'], ZMQ::SOCKET_REQ);
$_SESSION['req']->connect("tcp://localhost:30000");
// Set maximum wait time on receive to 250 milliseconds
$_SESSION['req']->setSockOpt(ZMQ::SOCKOPT_RCVTIMEO, 250);
}
现在我在 Apache 错误日志中得到了这个:
[notice] child pid 10411 exit signal Segmentation fault (11)
那么有人知道为什么会这样吗?
ZMQ 上下文是否存储在 PHP 本地内存地址中?我认为它应该存储在 Apche 在使用 $_SESSION 变量时应该能够找到的内存地址中。