本文目錄一覽:
- 1、php項目,怎麼設置sesssion的timeout時間
- 2、php語言如何設置超時處理??
- 3、PHP中幾種常見的超時處理全面總結
- 4、幾種常見的PHP超時處理方法
- 5、PHP file_get_contents 函數超時的幾種解決方法
- 6、php httpclient 超時怎麼辦
php項目,怎麼設置sesssion的timeout時間
一個新用戶請求訪問一個 URL,該 URL 標識了某個應用程序中的 .asp 文件,並且該應用程序的 Global.asa 文件包含 Session_OnStart 過程。
用戶在 Session 對象中存儲了一個值。
用戶請求了一個應用程序的 .asp 文件,並且該應用程序的 Global.asa 文件使用 OBJECT 標籤創建帶有會話作用域的對象的實例。
如果用戶在指定時間內沒有請求或刷新應用程序中的任何頁,會話將自動結束。這段時間的默認值是 20 分鐘。可以通過在 Internet 服務管理器中設置“應用程序選項”屬性頁中的“會話超時”屬性改變應用程序的默認超時限制設置。應依據您的 Web 應用程序的要求和服務器的內存空間來設置此值。例如,如果您希望瀏覽您的 Web 應用程序的用戶在每一頁僅停留幾分鐘,就應該縮短會話的默認超時值。過長的會話超時值將導致打開的會話過多而耗盡您的服務器的內存資源。
對於一個特定的會話,如果您想設置一個小於默認超時值的超時值,可以設置 Session 對象的 Timeout 屬性。例如,下面這段腳本將超時值設置為 5 分鐘。
% Session.Timeout = 5 %
您也可以設置一個大於默認設置的超時值,Session.Timeout 屬性決定超時值。
您也可以通過 Session 對象的 Abandon 方法顯式結束一個會話。例如,在表格中提供一個“退出”按鈕,將按鈕的 ACTION 參數設置為包含下列命令的 .asp 文件的 URL 。
% Session.Abandon %
———————————————————
關於 SessionID 和 Cookie
當用戶第一次請求給定的應用程序中的 .asp 文件時,ASP 生成一個 SessionID。SessionID 是由一個複雜算法生成的號碼,它唯一標識每個用戶會話。在新會話開始時,服務器將 Session ID 作為一個 cookie 存儲在用戶的 Web 瀏覽器中。
SessionID 與鑰匙很相似,當會話期間用戶與應用程序交互時,ASP 可以將用戶信息存儲在服務器的一個“保險箱”中。正象用鑰匙能存取保險箱中物品一樣,通過在 HTTP 請求標題中發送的用戶 SessionID cookie,就能夠對該“保險箱”中的內容進行訪問。每當 ASP 收到一個頁請求時,就檢查 HTTP 請求標題,以獲得 SessionID cookie。
在將 SessionID cookie 存儲於用戶的瀏覽器之後,即使用戶請求了另一個 .asp 文件,或請求了運行在另一個應用程序中的 .asp 文件,ASP 仍會重用該 cookie 跟蹤會話。與此相似,如果用戶故意放棄會話或讓會話超時,然後再請求另一個 .asp 文件,那麼 ASP 將以同一個 cookie 開始新的會話。只有當服務器管理員重新啟動服務器或用戶重新啟動 Web 瀏覽器時,此時存儲在內存中的 SessionID 設置將被清除,用戶將會獲得新的 SessionID cookie。
通過重用 SessionID cookie,ASP 將發送給用戶瀏覽器的 cookie 數量降為最低。另外,如果您決定您的 ASP 應用程序不需要會話管理,就可以不讓 ASP 跟蹤會話和向用戶發送 SessionID 。
TimeOut設為0或-1就可以不超時
php語言如何設置超時處理??
set_time_limit — 限制最大的執行時間
set_time_limit
(PH3 , PHP4)
set_time_limit — 限制最大的執行時間
語法 : void set_time_limit (int seconds)
說明 :
設定一個程式所允許執行的秒數,如果到達限制的時間,程式將會傳回錯誤。它預設的限制時間是30秒,max_execution_time的值定義在結構檔案中(在PHP3中叫做php3.ini,在PHP4則叫做php.ini),如果將秒數設為0,表示無時間上的限制。
當呼叫此函式時,set_time_limit( )會從零重新開始計算最長執行的時間,也就是說,如果最長執行時間為預設的30秒,而在呼叫此函式set_time_limit(20)之前已花了25秒來執行程式,則程式最長執行的時間將會是45秒。
注意 : 當PHP是執行在安全模式時,set_time_limit( )將不會有結果,除非是關閉安全模式或是修改結構檔案中(在PHP3中叫做php3.ini,在PHP4則叫做php.ini)的時間限制。
PHP中幾種常見的超時處理全面總結
具體代碼如下:
?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, ”);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?
PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。
它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,
執行效率比完全生成HTML標記的CGI要高許多;
PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
幾種常見的PHP超時處理方法
進入php源程序目錄中的ext目錄中,這裡存放着各個擴展模塊的源代碼,選擇你需要的模塊,比如curl模塊:cd curl
執行phpize生成編譯文件,phpize在PHP安裝目錄的bin目錄下
/usr/local/php5/bin/phpize
運行時,可能會報錯:Cannot find autoconf. Please check your autoconf installation and
the $PHP_AUTOCONF
environment variable is set correctly and then rerun this
script.,需要安裝autoconf:
yum install autoconf(RedHat或者CentOS)、apt-get install
autoconf(Ubuntu Linux)
/usr/local/php5/bin/php -v
執行這個命令時,php會去檢查配置文件是否正確,如果有配置錯誤,
這裡會報錯,可以根據錯誤信息去排查!
PHP file_get_contents 函數超時的幾種解決方法
這裡就簡單介紹兩種:
一、增加超時的時間限制
這裡需要注意:set_time_limit只是設置你的PHP程序的超時時間,而不是file_get_contents函數讀取URL的超時時間。
我一開始以為set_time_limit也能影響到file_get_contents,後來經測試,是無效的。真正的修改file_get_contents延時可以用resource
$context的timeout參數:
複製代碼
代碼如下:
$opts
=
array(
‘http’=array(
‘method’=”GET”,
‘timeout’=60,
)
);
$context
=
stream_context_create($opts);
$html
=file_get_contents(”,
false,
$context);
fpassthru($fp);
二、一次有延時的話那就多試幾次
有時候失敗是因為網絡等因素造成,沒有解決辦法,但是可以修改程序,失敗時重試幾次,仍然失敗就放棄,因為file_get_contents()如果失敗將返回
FALSE,所以可以下面這樣編寫代碼:
複製代碼
代碼如下:
$cnt=0;
while($cnt
3
($str=@file_get_contents(‘http…’))===FALSE)
$cnt++;
php httpclient 超時怎麼辦
//HttpClient功能很強大,可以和snoopy一樣實行模擬數據提交等操作
使用靜態方法quikGet(ur)或者quickPost(url)無法做到設置超時時間,所以做了如下修改,通過下面的方法可以實現
//設置時間超時
$bits = parse_url($main_url);
$host = $bits[‘host’];
$port = isset($bits[‘port’]) ? $bits[‘port’] : 80;
$path = isset($bits[‘path’]) ? $bits[‘path’] : ‘/’;
if (isset($bits[‘query’])) {
echo $path .= ‘?’.$bits[‘query’];
}
// $client = new HttpClient($main_url);
//$client-setDebug(false);
$client = new HttpClient($host, $port);
$client -timeout =10;
if (!$client-get($path)) {
return false;
} else {
$pageContents = $client-getContent();
}
//
原創文章,作者:RVIO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131321.html