我的PHP脚本从我的数据库读取并将消息发送到队列,以便工作者角色(以及其他LAMP机器)可以拉动它们并且并行工作。
但是,在我的apache服务器上的error_log中,我的脚本经常以致命错误结束,并显示以下消息。此错误在发送方。
PHP Notice: fwrite(): send of 414 bytes failed with errno=32
Broken pipe in /home/azureuser/pear/share/pear/HTTP/Request2/SocketWrapper.php on line 202
PHP Fatal error: Uncaught HTTP_Request2_MessageException:
Error writing request in /home/azureuser/pear/share/pear/HTTP/Request2/Adapter/Socket.php
on line 130
Exception trace
HTTP_Request2_SocketWrapper->write('POST /proxy/mess…')
/home/azureuser/pear/share/pear/HTTP/Request2/Adapter/Socket.php:130
HTTP_Request2_Adapter_Socket->sendRequest(Object(HTTP_Request2))
/home/azureuser/pear/share/pear/HTTP/Request2.php:93
in /home/azureuser/pear/share/pear/HTTP/Request2/SocketWrapper.php on line 206
在我看来,socket由于某些原因而抛出异常,因此没有处理,从而导致脚本崩溃。如果您同意,您是否建议修复SDK?
答案 0 :(得分:1)
第一次传球很快就看到了,但似乎:
fwrite(): send of 414 bytes failed with errno=32
指的是丢弃的套接字,可能由于以下几个原因而发生:
您是否能够查看FREB日志或在支持门户(https://[site-name].scm.azurewebsites.net/Support)中运行PHP流程报告来诊断套接字被丢弃的原因?
答案 1 :(得分:0)
您是否尝试过增加php套接字所连接的端点超时值? VM端点的默认超时为4分钟。您可以将其更改为更高的值。这是关于如何做到这一点的文章。 https://azure.microsoft.com/blog/2014/08/14/new-configurable-idle-timeout-for-azure-load-balancer/
在上面的链接中选中此部分:“在虚拟机上创建Azure端点时设置空闲超时”。