php CURL post大字符串

php CURL post大字符串,php,curl,Php,Curl,我需要使用php将一个大字符串(6000个字符)发布到服务器,该字符串是在php中动态创建的 $ch = curl_init('http://localhost:8080/mypost'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELD

我需要使用php将一个大字符串(6000个字符)发布到服务器,该字符串是在php中动态创建的

$ch = curl_init('http://localhost:8080/mypost');                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);     
$result = curl_exec($ch);
当数据字符串很小时,它可以正常工作,但一旦超过几千个字符,它就会挂起。php控制台中没有错误,只是没有完成。有趣的是,它在Quercus PHP(不使用libCurl而是自己的实现)中运行良好,但在标准PHP(PHP5.3.10-1ubuntu3.26)中不起作用。我需要让它在标准php中工作

接受服务器是一个JVM Grizzly服务器。我用Java编写了另一个客户机,它可以很好地发布字符串,所以我认为问题不在服务器上


我看到了这篇文章(),它看起来很有希望,但无法找到解决方案。

使用选项
CURLOPT\u BUFFERSIZE

试试这个:

$ch = curl_init('http://localhost:8080/mypost');                                                                      
curl_setopt($ch, CURLOPT_BUFFERSIZE, 84000);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);     
$result = curl_exec($ch);

当您指定
CURLOPT_POSTFIELDS
时,默认情况下假定为
POST
。删除
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,“POST”)它工作吗?不,它没有工作,仍然在Quercus PHP中工作。如果可以,发布真实的url,以便我们可以测试它。你可以随时替换它。该url是本地的,无法测试,否则我会。我开始认为问题出在服务器上。我认为我的Grizzly服务器正在做一些可以接受的事情,但是以一种php不期望的方式。我使用JDK的Sun server和PHP重新编写了服务器组件。因此,我将更仔细地查看服务器代码检查服务器配置文件上的
post\u max\u size