⑴ 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