我的代码非常简单。我正在https://github.com/stomp-php/stomp-php处使用该库,并尝试从Artemis队列中读取消息。这只是一个简单的$stomp->read();
。
例外是:Was not possible to read data from stream.
,抛出在[stomp-php目录] /src/Network/Connection.php行473中。
这是流连接的上下文:
ssl:
peer_name: '[censored]'
cafile: '[censored certificate path].cer'
证书文件存在并且可以正确读取(因为当我更改路径时,甚至在尝试发送消息之前都会引发异常)。对等名称也正确,因为另一个触发了另一个错误,告诉我对等名称不正确。
我的测试很简单:我有一个发送消息的文件和一个读取消息的文件。当我不订阅队列时,发送始终有效。阅读有点混乱。
新信息:当我从发送邮件中删除5条特定消息时,阅读似乎正常。这意味着如果我发送那5个,则读取将引发异常。如果只有其他消息,而没有这5条消息,则阅读效果很好。我认为消息是有原因的,但是同样,当我不使用SSL进行连接时,一切正常。
再次提供新信息:为了不必出错,我不必发送的每条消息都有很多行。我尝试再次发送其中一个,并从其内容(XML)中删除每个节点,但删除一个:它正常工作。所以我尝试了约900个节点:错误。 〜200个节点:错误。 〜130个节点:有时会出错。约80个节点:正在工作。
SSL遇到大邮件问题吗?
再次提供新信息:我尝试var_dumping库中fread调用的结果。发生错误时,结果为空字符串('')。根据我在文档中看到的内容,fread在失败时返回false,在 timeout 上返回空字符串。使用“再次提供新信息”集团是有意义的,在该集团中,我们发现大邮件正在引起问题。
我尝试了60秒的stream_set_timeout(),尝试手动发送心跳,尝试通过lib设置它,尝试通过lib更改超时,并尝试增加maxReadBytes。到目前为止没有任何工作。还是一样的行为。
答案 0 :(得分:1)
通过将stomp-php库恢复到4.3.1版来修复:(