解決PHP超時問題 |
發(fā)布時間: 2012/6/26 16:42:52 |
當(dāng)PHP頁面處理大事務(wù)時,頁面往往會發(fā)生超時的錯誤,我解決此問題的方法如下: 1.優(yōu)化程序代碼: 這種方法可能有時立竿見影,但對一些已經(jīng)很優(yōu)化或者第三方開發(fā)的程序,可能用處不大,但我個人覺得這個辦法還是應(yīng)該優(yōu)先考慮,這個一個優(yōu)秀程序員必需有的工作美德。 2.對多個任務(wù)進行拆分: 對于一些程序,可能問題并不出現(xiàn)在代碼效率上,如Paypal的SOAP調(diào)用,大量時間花費在網(wǎng)絡(luò)的數(shù)據(jù)傳遞上了,(此問題在Web Services的遠(yuǎn)程調(diào)用時經(jīng)常發(fā)生),我們當(dāng)然不能等將來網(wǎng)速的提高來解決這個問題。其實我們可以查看一下在一個POST動作中是否包含了多個任務(wù),如付費、發(fā)Email、發(fā)貨等等。如是這樣其實可以對這些任務(wù)進行拆分,把這個工作拆分成多個子工作來實現(xiàn)。如執(zhí)行完付費任務(wù)時,使用PHP的 Header函數(shù)重定向到發(fā)送Email的頁面,完成后再定向到其他頁面,采用redirect頁面的方式來接力地完成任務(wù)。 3.進行PHP設(shè)定值的修改 如果以上兩種方法仍然無法解決,代碼已經(jīng)最優(yōu)話,同時只有一個單任務(wù)的工作需要完成。針對這樣的情況,只能修改PHP的設(shè)定值了。不過建議不要直接修改PHP.ini,這樣會延長所有PHP執(zhí)行的最大時間。簡單的方法就是使用init_set函數(shù),以下的代碼把PHP最大執(zhí)行時間設(shè)定為180秒。 ini_set('max_execution_time', '180'); 但是必須在非安全模式(safe mode)下 同時可以使用ini_get把原來設(shè)置的max_execution_time保存下來,在進行完操作時回復(fù)原來的設(shè)定值。 也可以用 set_time_limit(0); 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |