我希望有人能帮我调试这个问题,我有一个PHP脚本,它可以很好地收集单个加密数据字符串,直到返回的字符串超过500,000个字符。我的脚本当前输出612,300个字符,此时CURL返回一个空结果。但是,如果我将字符串减少到500,000个字符以下,CURL可以在结果中显示数据。有谁知道这是为什么,以及我如何允许无限的返回字符串长度?这个问题与mod_security无关,因为它没有触发任何问题,它似乎只与字符串长度有关。谢谢
uxhixvfz1#
我自己在经过大量搜索后解决了这个问题,问题是设置CURLOPT_BUFFERSIZE,默认情况下将其限制为512 k。将其增加到字符串中的字节/字符数可以解决这个问题,扩展超时设置也可以解决这个问题,请参见下文:
curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_BUFFERSIZE, 1000000); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 30); curl_setopt($ch, CURLOPT_TIMEOUT, 300);
dfuffjeb2#
看起来你遇到了一个问题,PHP中的cURL无法处理特定大小的响应。这可能有几个因素,包括内存限制、超时设置或其他服务器端约束。以下是调试和可能解决问题的一些步骤:
如果脚本内存不足,可以通过在脚本顶部添加以下行来增加内存限制:
ini_set('memory_limit', '512M'); // or even higher if necessary
您可能还希望增加cURL超时设置,因为获取大量数据可能需要更长的时间。可以使用以下命令调整超时:
curl_setopt($curl, CURLOPT_TIMEOUT, 300); // 5 minutes
确保在执行请求后检查cURL错误。这可能会为您提供有关出错原因的更多信息:
$err = curl_error($curl); if ($err) { echo "cURL Error: " . $err; }
如果您通过POST发送大量数据,您可能需要在PHP配置(php.ini)中增加POST大小限制:
php.ini
post_max_size = 64M
如果上述步骤都不起作用,可能值得与您的托管服务提供商进行检查或检查服务器配置。Apache、Nginx或其他Web服务器可能有需要调整的限制。
您可以使用命令行cURL直接测试端点(在PHP外部)。这可以帮助您缩小问题是与PHP还是其他东西有关的范围:
curl -X GET "your_url_here"
如果一次性处理这么大的响应是不可行的,您可以考虑更改服务器发送响应的方式。您可以将其拆分为多个块,然后在客户端上逐块处理。如果您对服务器配置文件进行了任何更改,请记住重新启动Web服务器(Apache,Nginx等)。
2条答案
按热度按时间uxhixvfz1#
我自己在经过大量搜索后解决了这个问题,问题是设置CURLOPT_BUFFERSIZE,默认情况下将其限制为512 k。
将其增加到字符串中的字节/字符数可以解决这个问题,扩展超时设置也可以解决这个问题,请参见下文:
dfuffjeb2#
看起来你遇到了一个问题,PHP中的cURL无法处理特定大小的响应。这可能有几个因素,包括内存限制、超时设置或其他服务器端约束。
以下是调试和可能解决问题的一些步骤:
1.增加PHP内存限制
如果脚本内存不足,可以通过在脚本顶部添加以下行来增加内存限制:
2.增加cURL前缀:
您可能还希望增加cURL超时设置,因为获取大量数据可能需要更长的时间。可以使用以下命令调整超时:
3.检查错误
确保在执行请求后检查cURL错误。这可能会为您提供有关出错原因的更多信息:
4.增加POST大小(如果适用)
如果您通过POST发送大量数据,您可能需要在PHP配置(
php.ini
)中增加POST大小限制:5.检查服务器配置
如果上述步骤都不起作用,可能值得与您的托管服务提供商进行检查或检查服务器配置。Apache、Nginx或其他Web服务器可能有需要调整的限制。
6.直接删除cURL
您可以使用命令行cURL直接测试端点(在PHP外部)。这可以帮助您缩小问题是与PHP还是其他东西有关的范围:
7.考虑对响应进行分块
如果一次性处理这么大的响应是不可行的,您可以考虑更改服务器发送响应的方式。您可以将其拆分为多个块,然后在客户端上逐块处理。
如果您对服务器配置文件进行了任何更改,请记住重新启动Web服务器(Apache,Nginx等)。