CURL脚本导致apache挂起1个子域挂起(即使使用不同的会话)

时间:2016-09-09 22:34:15

标签: php apache curl

下面有一个php curl脚本,模拟浏览器登录到站点,在REMOTE服务器上执行脚本并输出结果。

它正在调用的REMOTE服务器上的脚本使用passthru(mysqldump ....);

如果我通过点击控制+ p并且不允许curl_close在脚本上部分地停止curl脚本,那么它在尝试通过该URL(client.domain.com)访问应用程序时会永远挂起,即使对于新的会话也是如此不同于curl脚本的cookie。

所有其他客户端都不受影响,仍然可以访问数据库。是否有改变的apache设置?重新启动apache解决了这个问题。

所有客户都有自己的数据库和OWN子域:

client.domain.com - >自己的数据库 client2.domain.com - >自己的数据库 client3.domain.com - >自己的数据库

我正在使用cent os 6和Apache / 2.2.15

这是我打电话来模拟浏览器的脚本。

<?php
//////////////////////////////////////////////////////////
$store_url = 'http://subdomain.domain.com';
$username = 'username';
$password = 'password';
///////////////////////////////////////////////////////////


$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $store_url.'/index.php/login');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl,CURLOPT_POST, 2);
curl_setopt($curl,CURLOPT_POSTFIELDS, "username=$username&password=$password");

$data = curl_exec($curl);
curl_close($curl);

preg_match_all('|Set-Cookie: (.*);|U', $data, $matches);   
$cookies = implode('; ', $matches[1]);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $store_url.'/index.php/config/do_mysqldump_backup');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl, CURLOPT_HEADER, false);  
curl_setopt($curl, CURLOPT_RETURNTRANSFER, false); 
curl_setopt($curl, CURLOPT_COOKIE, $cookies);
curl_exec($curl);
curl_close($curl);

0 个答案:

没有答案