curl php后期服务不可用-已达到活动客户端的最大数量

curl php后期服务不可用-已达到活动客户端的最大数量,php,post,curl,connection,http-status-code-503,Php,Post,Curl,Connection,Http Status Code 503,您好,我正在执行curlPHP POST请求(因为跨域源代码),我面临一个问题。Post请求被发送到一台机器,该机器承载一些我无法控制的自定义web服务器。第一个请求(如15-20个)是可以的,但是在这个请求数之后,我得到了带有错误消息的503错误响应 服务不可用-已达到活动客户端的最大数量 我假设curl每次发送请求时都在创建一个新连接。我还假设机器服务器只能打开几个连接 以下是我的php代码: $data = array("getTags" => array("Start_dav","

您好,我正在执行
curl
PHP POST请求(因为跨域源代码),我面临一个问题。Post请求被发送到一台机器,该机器承载一些我无法控制的自定义web服务器。第一个请求(如15-20个)是可以的,但是在这个请求数之后,我得到了带有错误消息的
503错误
响应

服务不可用-已达到活动客户端的最大数量

我假设curl每次发送请求时都在创建一个新连接。我还假设机器服务器只能打开几个连接

以下是我的php代码:

$data = array("getTags" => array("Start_dav","CutON"), "includeTagMetadata" => false);                                                                    
$data_string = json_encode($data);

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,"http://domainipaddres/");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIE, "SID=8c81775da6");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false);
curl_setopt($ch, CURLOPT_FORBID_REUSE, false);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string),
       'Connection: Keep-alive',
       'Keep-alive: 300'
    )                                                                       
);  

//execute post
$result = curl_exec($ch);   
//close connection
curl_close($ch);
我真的需要弄清楚,但在尝试了两天不同的选项和标题数据后,我无法让它工作。如何强制curl仅使用一个连接

多谢各位


编辑:我今天发现了一个问题。服务器只能有3个活动客户端。我发现服务器的第一个响应头中设置了cookie,我需要在另一个请求中使用该cookie。我手动设置它,它可以工作。有什么办法可以自动完成吗?

我今天解决了这个问题。我检查了响应头,发现服务器设置了cookie。我只需要保存cookies,并在其他请求中使用它,它就可以正常工作了。以下是代码的一部分:

$data_string = json_encode($data);
$agent= 'Mozilla/5.0 (Windows; U;Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9';
//open connection
$ch = curl_init();
$f = fopen('request.txt', 'w'); //writes headers to this file
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,"domainipaddress");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);
$tmpfname = dirname(__FILE__).'/cookie.txt'; //saves the cookie from server
curl_setopt($ch, CURLOPT_COOKIEJAR, $tmpfname);
curl_setopt($ch, CURLOPT_COOKIEFILE, $tmpfname);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch,  CURLOPT_VERBOSE,  1 ); 
curl_setopt( $ch,  CURLOPT_STDERR,  $f );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_FORBID_REUSE, false);                                                                    
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                        
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string),
       'Connection: keep-alive',
       "Keep-Alive: 300"
    )                                                                       
);  

//execute post
$result = curl_exec($ch);
$headers = curl_getinfo($ch);
fclose($f);

无论如何谢谢你

听起来另一台服务器非常有限,一秒钟只能处理几个操作。换句话说,问题不在于连接,而在于终端的处理能力不足。在我得到503响应后,下一个请求在我等待10分钟后工作。但首先,像20个不在行中发送的请求就可以了。这就是奇怪的地方。我认为,如果在请求后立即关闭连接,应该可以。或者,如果curl对请求使用相同的连接,如果它仍然处于活动状态。这不应该是问题我会尝试没有curl选项CURLOPT_COOKIE,CURLOPT_SSL_VERIFYPEER,CURLOPT_禁止重用。看看没有它会发生什么…另外,不要执行curl_close($ch);只要你打算再发一篇帖子……就没什么用了。还是一样的问题。我在某个地方读到旋度对最后一个鳍旗没有反应。也许这就是问题所在。无法查看curl是否正在打开新连接