php CURL post大字符串
我需要使用php将一个大字符串(6000个字符)发布到服务器,该字符串是在php中动态创建的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
$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