真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP連接超時如何解決

這篇文章主要講解了“PHP連接超時如何解決”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“PHP連接超時如何解決”吧!

為岳陽樓等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及岳陽樓網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、岳陽樓網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

這里拋出一個常見問題:PHP環(huán)境下腳本運行超時,尤其是處理后臺服務(wù)數(shù)據(jù)處理時經(jīng)常會遇到。

PHP連接超時如何解決

Maximum execution time of 120 seconds exceeded

常規(guī)解決排查方式

我們的排查思路一般從數(shù)據(jù)量開始,主觀判斷由于程序需要處理的數(shù)據(jù)過多,造成運行處理時間過長,超出了系統(tǒng)限定的腳本最大執(zhí)行時間。那么真的是處理的數(shù)據(jù)過多,還是程序?qū)懛ɑ蛘哌壿嫶嬖陲L(fēng)險問題?我們從以下幾個方面分析

1 瓶頸出現(xiàn)在數(shù)據(jù)庫層面,比如關(guān)系型或者NoSql數(shù)據(jù)庫中的字段缺失,即字段拼寫錯誤,造成數(shù)據(jù)庫查詢卡死或者數(shù)據(jù)庫數(shù)據(jù)量巨大,沒有在條件字段下建立索引。這種情況下,程序會一直等待數(shù)據(jù)庫操作的返回,腳本自然會中斷報錯。

Read timed out after reading 0 bytes, waited for 30.000000 seconds

2 減少單次處理的數(shù)據(jù)量,避免foreach中循環(huán)操作數(shù)據(jù)庫

數(shù)據(jù)庫層面能夠順利讀取數(shù)據(jù),常規(guī)循環(huán)次數(shù)過多,應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器IO頻率過高仍然會出現(xiàn)以上問題。

3 程序過程中涉及到大數(shù)組的讀取,合并,組合,造成內(nèi)存過載,比如PHP的最大使用內(nèi)存是128M,而一個腳本耗時幾分鐘,使用內(nèi)存達到50M,著這樣的比例,長期來看必定存在風(fēng)險。

PHP內(nèi)置函數(shù)memory_get_usage()能返回當(dāng)前分配給PHP腳本的內(nèi)存量,單位是字節(jié)(byte).

memory_get_peak_usage()函數(shù)返回內(nèi)存使用峰值,getrusage()返回CUP使用情況。

如何解決

第一種解決方式: 最簡單,但是不持久,不合理

從配置的角度解決

腳本中設(shè)定程序執(zhí)行不超時,set_time_limit(0);

內(nèi)存使用不限制,ini_set(‘memory_limit’,0);

增加腳本超時時間,合作加大內(nèi)存使用M數(shù)。

第二種解決方式對癥下藥

合理存取數(shù)據(jù),優(yōu)化數(shù)據(jù)庫結(jié)構(gòu),優(yōu)化數(shù)據(jù)存取比例和程序邏輯,通過unset釋放大數(shù)組。

索引優(yōu)化

實際例子,一張100萬數(shù)據(jù)量的MongoDB集合增加普通的索引,即可讓一次從1o幾秒的查詢耗時降低到0.1秒以下。可以預(yù)見這樣的程序性能提升。

以上討論的解決方式都能正確解決問題嗎,我們發(fā)現(xiàn)以上的解決方式都局限在同步編程模型下,更深層次深究,或許我們應(yīng)該從同步處理的思維下,轉(zhuǎn)換為異步思維。

在php-fpm模式下,php處理耗時比較長任務(wù)時,會發(fā)生堵塞,此時可以用異步方法,將該任務(wù)拋出,程序繼續(xù)向下執(zhí)行。

異步處理方式

那么PHP應(yīng)用程序編程有哪些常見的異步處理方式

使用redis或者其它消息中間件做中轉(zhuǎn),分離數(shù)據(jù)與程序,結(jié)合消息隊列異步處理長時間的大數(shù)據(jù)耗時任務(wù)

或者引入Swool服務(wù)框架,在大并發(fā)的前提下才能感知到效果。

根據(jù)不同的業(yè)務(wù)需求做技術(shù)選擇。

感謝各位的閱讀,以上就是“PHP連接超時如何解決”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對PHP連接超時如何解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


當(dāng)前名稱:PHP連接超時如何解決
當(dāng)前鏈接:http://weahome.cn/article/pgjies.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部