PHP 使用 SoapClient 耗尽内存大小

PHP exhausting memory size using SoapClient

今天,我的 PHP 应用程序开始失败,它使用了 https://github.com/rileydutton/Exchange-Web-Services-for-PHP 的电子邮件解析器技术,该技术已工作多年。

在此之前,EC2 驱动器已满,站点出现故障。我解决了免费的 space 问题,除了解析器之外,网站又回来了。然后我像往常一样通过 yum 更新系统并重新启动服务。然后我重新启动了整个服务器。

日志指出:

未捕获的 SoapFault 异常:[客户端] 在 /var/www/html/core/php/owaews/lib/NTLMSoapClient.php:10

中耗尽了 314572800 字节的允许内存大小(尝试分配 1052319233 字节)

这是连接到 WSDL 的初始构造代码。

请求的内存量发生了变化,但此代码多年未变,所以我很惊讶它正在运行。

PHP 设置为允许 memory_usage.

的 300MB

我想知道如何解决这个问题及其根本原因。

目前 运行 亚马逊 Linux 2017.09 4.9.85-37 使用 Apache 2.4.27 和 PHP 7.1.13 使用 FPM/FastCGI

好的,显然是远程加载 WSDL 导致了内存问题。最初的想法是在 OWA 方面进行更改,返回一些站点正在阻塞的奇怪数据。

幸运的是,解析器代码允许您在本地加载 WSDL,并且在本地加载时不会出现问题。