剛接觸ThinkPHP時,覺得很新鮮,但做項目使用thinkphp後速度很慢,慢如龜速,有時在想國産的框架用的人那麽多,怎麽會這麽慢,PHP不該這麽運行慢的。
經過多方查找,發現了個槼律,只要是在PHP5.3環境下的PHP都運行很慢,這與PHP版本有關?經測試發現問題。
PHP遇到了執行效率問題,經測試和排查跟編譯版本和mysqlnd關係並不大,解決方法還是需要從代碼本身入手。
ipv4和ipv6同時啓用的沖突
將PHP連接數據庫語句中的代碼直接用IP表示:
$dbhost = 'localhost'
改爲:
$dbhost = '127.0.0.1'
在ThinkPHP中,連接數據庫的代碼:
'DB_HOST' => 'localhost', //數據庫主機
改爲:
'DB_HOST' => '127.0.0.1', //數據庫主機
如果同時開啓了ipv6和ipv4,並且解析到了localhost這個關鍵字上,會産生沖突。在代碼配置裡改一改會解決數據庫連接卡的問題。
隱形BUG多,PHP主版本<7且有大量的Notice錯誤沒有排除
一般來說, 小夥伴們在拿php寫東西,難免會遇到一些小錯誤,例如找不到數組對應的鍵值之類的。而php的特性是比較皮實的,不會因爲這點問題就崩掉。Thinkphp3.x默認會把錯誤寫在日志文档裡,這樣外面的人看不到原本斑駁的錯誤了,很開心。
因此,需要找出項目文档夾中runtime/log子目錄裡面的日志文档,搜索Notice關鍵字。隨著訪問日志/測試強度的增加,你有可能會找到許多notice錯誤提示。
例如:undefined offset報錯,數組下標找不到;該用isset()函數做判斷的地方沒有判斷……等等問題。根據這些notice錯誤提示來摸索,依此排除掉這些錯誤,而不要忽略這些報錯,是使用Thinkphp這類框架提高訪問速度的最佳辦法。
重構代碼, 將PHP3升爲PHP5
如果App邏輯代碼不是很多很複雜的話, 當然是升一下框架。業務代碼多那就算了。