⑴ php curl 保持会话
楼主的思路问题不大,但是服务端不支持你想什么办法都没用,最好是服务端能支持令牌(token)模式,否则在安全机制的作用下用curl是维持不了你所说的长连接的。
关于会话模式,通常所说的回话模式并不等同于持久连接,php发起的curl会话的生命周期是当前的php进程而已。这么打个比方吧,你通过a.php完成了登录,然后b.php想使用刚才拿到的认证继续工作,相当于在ie窗口登录,然后在firefox浏览器继续工作,服务器端当然不认可了。
何况我用你提供的账号实验了一下,登录之后会进入到 http://sms.huhutv.com.cn/rtcrm-clientweb/npage/base/pub/pub0010/Pub0010Controller-initMainPage.gv 这个页面,然后关掉页面并打开一个新的标签页,粘贴这个地址后直接就报错了,说 “非法进入系统”,可是偏偏重新登录的时候又提示您的账号已经登录。
呵呵,服务端自己的登录/认证处理都工作不正常,你搞curl持久连接又怎么可能成功。
⑵ PHP如何开启CURL扩展支持
开启curl扩展,这需要修改PHP的配置,在Windows 中只需简单三步:
将PHP安装文件夹下的三个文件php_curl.dll(可能在ext文件夹中),libeay32.dll,ssleay32.dll 复制到 %windir%/system32下。
3、重启php的服务(apache或者IIS),如重启IIS,运行iisreset即可。
⑶ php curl默认链接超时时间是多少
HTTP1.0与HTTP1.1的一个很大的差别是HTTP1.1支持长连接。现实中有很多这个场景,就是请求了一个页面,然后这个页面的其他内容,例如CSS文件,JS文件都要从同一个服务(相同服务器,相同端口)上面获取。这些向相同服务器的请求如果能够复用连接,是很有利于提供网络性能。
总的来说,复用HTTP连接有两个好处:
1. 节省系统端口资源(每一次连接都要使用端口,端口的资源是有限的)
2. 节省创建socket连接的时间。
下面讲讲在PHP下面,如何使用CURL来复用连接:
curl是在一个handle里面复用连接的,所以这样就可以复用连接了:
$ch = curl_init();
$ret = curl_exec($ch);
......
$ret2 = curl_exec($ch);
....
curl_close($ch);
在初始化跟关闭$ch资源时即可复用连接。
我这里写了两个函数,可以支持GET跟POST的请求,大家感兴趣可以看看。
function curl_get($url, $timeout=5) {
global $g_handle;
if (empty($g_handle)) $ch = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FRESH_CONNECT => false,
CURLOPT_FORBID_REUSE => false,
CURLOPT_TIMEOUT => $timeout
);
curl_setopt_array($g_handle, $options);
$ret = curl_exec($g_handle);
return $ret;
}
// 可以支持POST数据,$post是一个数组,$timeout是超时时间。
function curl_post($url, $post=array(), $timeout=10) {
global $g_handle;
if (empty($g_handle)) $g_handle = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FRESH_CONNECT => false,
CURLOPT_FORBID_REUSE => false,
CURLOPT_TIMEOUT => $timeout,
CURLOPT_POSTFIELDS => http_build_query($post)
);
if (empty($post)) $options[CURLOPT_POST] = false;
curl_setopt_array($g_handle, $options);
$ret = curl_exec($g_handle);
return $ret;
}
⑷ linux下xampp集成环境中怎么为php添加curl扩展
curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
在xampp集成环境中,curl自带,只不过默认关闭。
vim/etc/php.ini
注:此处的/etc/php.ini 请找到自己的php.ini路径
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
然后找到:
;extension=php_curl.dll
在Vim下搜索字符串方法如下:
1、命令模式下输入“/字符串”,例如“/Section 3”。
2、如果查找下一个,按“n”即可。
要自当前光标位置向上搜索,请使用以下命令:
/pattern Enter
将;extension=php_curl.dll的注释去掉,保存退出
:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。
最后重启服务即可
service httpd restart