這篇文章主要講解了“php方法執(zhí)行時間過長的問題怎么解決”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“php方法執(zhí)行時間過長的問題怎么解決”吧!
站在用戶的角度思考問題,與客戶深入溝通,找到海北州網(wǎng)站設(shè)計與海北州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋海北州地區(qū)。
php方法執(zhí)行時間過長的解決辦法:1、進行Nginx網(wǎng)關(guān)請求超時設(shè)置;2、進行PHP腳本執(zhí)行時間上限設(shè)置。
本文操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
如何解決php方法執(zhí)行時間過長的問題?
解決 PHP 方法執(zhí)行時間過長導(dǎo)致 502 Bad Gateway
背景
最近遇到一個問題,有一段 PHP 代碼需要涉及到長時間的 IO 操作,而這一段會阻塞請求所在的線程,導(dǎo)致請求超時。
你可能會說,這有啥難的,開個線程異步去做,做好了更新狀態(tài)就 OK 了。這真是一個不錯的方案,可惜這一整套代碼都是別人的。如果要修改代碼,業(yè)務(wù)上會牽一發(fā)而動全身,所以我的解決辦法是盡量不修改代碼的情況下,通過配置超時時間來解決這個問題。
解決方案
從以上問題來看,超時主要受到兩個因素的影響:
Nginx 網(wǎng)關(guān)請求超時設(shè)置
PHP 腳本執(zhí)行時間上限設(shè)置
我們依次進行設(shè)置。
Nginx 網(wǎng)關(guān)請求超時設(shè)置
Nginx 支持超時的設(shè)置粒度很細(xì)。主要使用的幾個如下:
keepalive_timeout
Nginx 使用 keepalive_timeout 來指定 KeepAlive 的超時時間。指定每個 TCP 連接最多可以保持多長時間。Nginx 的默認(rèn)值是 75 秒,有些瀏覽器最多只保持 60 秒,所以可以設(shè)定為 60 秒。
fastcgi_connect_timeout
與FastCGI服務(wù)器建立連接的超時。
fastcgi_send_timeout
設(shè)置將請求傳輸?shù)紽astCGI服務(wù)器的超時。 僅在兩次連續(xù)寫入操作之間設(shè)置超時,而不是為整個請求的傳輸。 如果FastCGI服務(wù)器在此時間內(nèi)未收到任何內(nèi)容,則關(guān)閉連接。
fastcgi_read_timeout
從FastCGI服務(wù)器讀取響應(yīng)的超時。 僅在兩個連續(xù)的讀操作之間設(shè)置超時,而不是為整個響應(yīng)的傳輸。 如果FastCGI服務(wù)器在此時間內(nèi)未傳輸任何內(nèi)容,則關(guān)閉連接。
考慮到一次請求 PHP 腳本的執(zhí)行和后三個設(shè)置比較相關(guān)。所以在對應(yīng)網(wǎng)站的 Nginx 配置文件中添加設(shè)置即可。
fastcgi_connect_timeout 600s; fastcgi_send_timeout 600s; fastcgi_read_timeout 600s;
PHP 腳本執(zhí)行時間上限設(shè)置
PHP 腳本的執(zhí)行時間主要是受兩個配置的影響:
php.ini 中 max_execution_time 和 max_input_time
php.ini 的默認(rèn)位置在 /usr/local/php/etc/
將 php.ini 配置文件中的這兩個配置項修改為超時時間上限。
max_execution_time = 600 max_input_time = 600 php-fpm.conf 中 request_terminate_timeout php-fpm.conf 的默認(rèn)位置在 /usr/local/php/etc/ request_terminate_timeout 也設(shè)置為超時時間的上限。 request_terminate_timeout = 600
修改完成后重啟 Nginx 和 php-fpm 即可。
service nginx reload /etc/init.d/php-fpm reload
感謝各位的閱讀,以上就是“php方法執(zhí)行時間過長的問題怎么解決”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對php方法執(zhí)行時間過長的問題怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
分享文章:php方法執(zhí)行時間過長的問題怎么解決
當(dāng)前地址:http://m.2m8n56k.cn/article38/pccgpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、企業(yè)建站、、定制網(wǎng)站、ChatGPT、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)