1

我的 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

在我看来,套接字由于某种原因引发了一个未处理的异常,从而使脚本崩溃。如果您同意,您是否建议修复 SDK 是个好主意?

4

2 回答 2

1

第一次通过时非常迅速地对此进行了调查,但似乎:

fwrite(): send of 414 bytes failed with errno=32 

指的是掉线的套接字,这可能由于以下几个原因而发生:

  • 站点进入冷状态(始终打开)
  • 套接字保持打开的时间极长并由 LB 终止
  • 发生了一些意外并且套接字崩溃(认为异常写入队列)

您是否能够查看 FREB 日志或在支持门户 ( https://[site-name].scm.azurewebsites.net/Support ) 中运行 PHP 进程报告来诊断套接字被丢弃的原因?

于 2015-08-06T06:38:17.387 回答
0

您是否尝试过增加您的 php 套接字连接到的端点超时值。VM 端点的默认超时为 4 分钟。您可以将其更改为更高的值。这是有关如何做到这一点的文章。https://azure.microsoft.com/blog/2014/08/14/new-configurable-idle-timeout-for-azure-load-balancer/

检查此部分:上面链接中的“在虚拟机上创建 Azure 端点时设置空闲超时”。

于 2015-08-22T00:37:32.910 回答