Php zmq分段错误

Php zmq分段错误,php,linux,apache,zeromq,Php,Linux,Apache,Zeromq,我使用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 ti

我使用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在使用$\u会话变量时应该能够找到的内存地址中。

您应该在connect()之前设置sockopt(),但我不知道分段错误是否与此相关

警告:除ZMQ_SUBSCRIBE、ZMQ_UNSUBSCRIBE和ZMQ_LINGER外,所有选项仅对后续套接字绑定/连接生效