PHP Curl -来自服务器的空回复


PHP Curl - Empty Reply from server

我有一个使用CURL POST请求调用RESTful API的应用程序。如果POSTFIELD数据较小(<1024字节),请求将给出期望的响应,但如果POSTFIELD数据较大,CURL执行只返回"来自服务器的空答复"错误。API脚本确实得到执行,因为我只能看到部分数据插入到我的数据库后,执行突然终止。

我已经尝试增加default_session_timeout和memory_limit。

我检查了Apache的错误日志,但没有发现任何记录在那里。这是我使用CURL使用REST API的代码:

                $curl = curl_init($this->serviceUrl);
                $curl_post_data = (is_array($data)) ? http_build_query($data) : $data;
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($curl, CURLOPT_TIMEOUT, 420); 
                curl_setopt($curl, CURLOPT_POST, true);
                curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
                curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
                $curl_response = curl_exec($curl);
                if ($curl_response === false) {
                    $errorMessage = curl_error($curl);
                    $info = curl_getinfo($curl);
                    'Tools::writeErrorLog($errorMessage);
                    'Tools::writeErrorLog($info);
                }
                curl_close($curl);
                return $curl_response;

在服务器配置或PHP代码本身是否有任何特定的修复?

PHPINFO细节:

  • post_max_size - 8mb
  • 内存限制- 256mb
  • default_socket_timeout - 60

我解决了这个问题。正如我所怀疑的,问题是内存泄漏。我重新访问了我的API代码并取消了一些不必要的对象,这些对象释放了内存以供进一步处理。@Timm和@Mihai感谢你们的帮助!