進入php源程序目錄中的ext目錄中,這里存放著各個擴展模塊的源代碼,選擇你需要的模塊,比如curl模塊:cd curl
創新互聯是專業的鹽山網站建設公司,鹽山接單;提供做網站、成都網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行鹽山網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
執行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頁面處理大事務時,頁面往往會發生超時的錯誤,我解決此問題的方法如下:1.優化程序代碼:這種方法可能有時立竿見影,但對一些已經很優化或者第三方開發的程序,可能用處不大,但我個人覺得這個辦法還是應該優先考慮,這個一個優秀程序員必需有的工作美德。2.對多個任務進行拆分:對于一些程序,可能問題并不出現在代碼效率上,如Paypal的SOAP調用,大量時間花費在網絡的數據傳遞上了,(此問題在Web Services的遠程調用時經常發生),我們當然不能等將來網速的提高來解決這個問題。其實我們可以查看一下在一個POST動作中是否包含了多個任務,如付費、發Email、發貨等等。如是這樣其實可以對這些任務進行拆分,把這個工作拆分成多個子工作來實現。如執行完付費任務時,使用PHP的Header函數重定向到發送Email的頁面,完成后再定向到其他頁面,采用redirect頁面的方式來接力地完成任務。3.進行PHP設定值的修改如果以上兩種方法仍然無法解決,代碼已經最優話,同時只有一個單任務的工作需要完成。針對這樣的情況,只能修改PHP的設定值了。不過建議不要直接修改PHP.ini,這樣會延長所有PHP執行的最大時間。簡單的方法就是使用init_set函數,以下的代碼把PHP最大執行時間設定為180秒。ini_set('max_execution_time', '180');同時可以使用ini_get把原來設置的max_execution_time保存下來,在進行完操作時回復原來的設定值。
這里就簡單介紹兩種:
一、增加超時的時間限制
這里需要注意: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
$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還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
1.由于數據庫設計問題造成SQL數據庫新增數據時超時
癥狀:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e31' ([ODBC SQL Server Driver]超時已過期);
服務器上看CPU、內存占用率很低;
事件日志中提示: 數據庫 '*********' 中文件 '***********' 的自動增長在 453 毫秒后已取消或出現超時。使用 ALTER DATABASE 設置更小的 FILEGROWTH 或設置新的大小。
原因:
數據庫設置時,[文件增長]按百分比來增長,當數據庫文件很大時(1G以上),新增操作都會報超時,而這時候其實CPU、內存占用率都非常非常的低。
解決方法:
把上述的文件增長這里設置為一個更低的百分比或者直接指定增加多少兆字節。
2.SQL Server數據庫超時設置
修改客戶端的連接超時設置。默認情況下,通過企業管理器注冊另外一臺SQL Server的超時設置是 4 秒,而查詢分析器是 15 秒。
企業管理器中的設置:
在企業管理器中,選擇菜單上的"工具",再選擇"選項";
在彈出的"SQL Server企業管理器屬性"窗口中,點擊"高級"選項卡;
在"連接設置"下的"登錄超時(秒)"右邊的框中輸入一個比較大的數字,如 30。
查詢分析器中的設置:
單擊“工具”-"選項"-"連接"; 將登錄超時設置為一個較大的數字,連接超時改為0。
3.查詢語句時超時
原因分析:
查詢超時一般來說首先要從sql語句和數據表的結構上找原因,優化sql語句和為數據庫的查詢字段建索引是最常用的辦法。
另外,數據庫的查詢超時設置一般是sqlserver自己維護的(在你沒有修改query wait配置前),只有當你的實際查詢時間超過估計查詢時間的25倍時,才會超時。
而造成超出估計值那么多的原因有兩種可能:
估計時間不準確;
sql語句涉及到大量占用內存的查詢(如排序和哈希操作),內存不夠,需要排隊等待資源造成的。
解決辦法:
優化語句,創建\使用合適的索引;
解決第一個問題的方法,更新要查詢表的索引分發統計,保證估計時間的正確性,UPDATE STATISTICS 表名;
增加內存
如果想手動設置查詢超時,可以使用以下語句:
sp_configure 'show advanced options', 1 GO RECONFIGURE GO sp_configure 'query wait', 2147483647 GO RECONFIGURE GO
4.應用程序連接失敗
故障:
在應用程序中我們也會遇到類似的錯誤信息,例如:
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'. [Microsoft][ODBC SQL Server Driver]超時已過期.
解決方法:
A.如果遇到連接超時的錯誤,我們可以在程序中修改 Connection 對象的超時設置,再打開該連接。例如:
<%Set Conn = Server.CreateObject("ADODB.Connection")DSNtest="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase"Conn. Properties("Connect Timeout") = 15 '以秒為單位Conn.open DSNtest%>
B. 如果遇到查詢超時的錯誤,我們可以在程序中修改 Recordset 對象的超時設置,再打開結果集。例如:
Dim cn As New ADODB.ConnectionDim rs As ADODB.Recordset. . . cmd1 = txtQuery.TextSet rs = New ADODB.Recordsetrs.Properties("Command Time Out") = 300'同樣以秒為單位,如果設置為 0 表示無限制rs.Open cmd1, cnrs.MoveFirst. . .
另外,一些硬件及網絡方面的原因也可能造成SQL數據庫連接超時.
//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();
}
//
網站名稱:php數據超時,php設置超時時間
分享路徑:http://vcdvsql.cn/article14/hecige.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、服務器托管、品牌網站設計、用戶體驗、網站設計公司、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯