關於PHP效能提公升踩過的一些坑

2022-08-29 12:12:09 字數 1524 閱讀 8145

效能這個東西,在**規模到達一定程度後,會是乙個永恆的主題。關於這方面,本人有一些拙見,現在拿出來,大家一起**下。

1、編碼過程中,傳遞引數時,盡量少使用『引用傳參』。這是乙個巨坑啊。。。我們要了解,php所以來的技術模型是什麼?寫時複製(copy-on-write)好吧啦。當你使用『引用傳參』的時候,你的那個什麼變數啊啥的都會再重新複製乙份,知道了不。然而當你直接傳參乙個巨大的變數給某個函式的時候,並不會對你的效能造成多大影響。所以嘞,當你的程式出現效能問題的時候,不妨看看是否使用了『引用傳參』這個鬼吧。

2、在使用for迴圈之前。$i

3、使用isset函式的時候要注意你所檢測的變數,可不可以設定為null。這是乙個比較隱秘的坑。因為isset對變數未設定和變數為null返回的值是一樣的。所以盡量注意下嘍。這個對你的效能提公升的不大,但是,會反映出來你的程式的嚴謹性。所以嘞,仁者見仁智者見智,多注意下總不會錯的。

4、還是迴圈。我們通常會用迴圈來做一些事情,比如:組合、檢測、替換資料等等。。。但是我們又沒有想過,當我們迴圈完畢後會留下陣列的引用。這就是個麻煩事情了。這些引用,會占用我們的執行記憶體,對下面的編碼也會有一定的影響。所以嘞,最好的做法就是,每次迴圈完事之後,使用unset來清一下這些殘留。有備無患,相信效能方面會有那麼一丟丟的提公升的。

5、盡量不要在迴圈中使用查詢。這個就很明顯了。每迴圈一次就呼叫一次資料庫效率高,還是只執行一次查詢效率高,諸君應該都清楚。哪怕是一次查詢的資料量大,我們還可以分段查詢或者分批次查詢。總是會比多次呼叫要好一點的。

6、正則的問題相信大家應該知道。盡量少使用吧,多使用php的內建函式。這才是明智之道。但是內建函式也是有快慢之分的哈。最慢的應該就是魔術變數之類的了,可能不準確,大家編碼的時候注意下。

7、用少量的**實現功能。正常人的思維麼,盡量把業務邏輯分析清楚之後再開始編碼。這點如果做到的話,關於php的效能優化基本上就完成了一大部分了。這裡的什麼可讀性啦啥的在下就不囉嗦了,就是提一下。

8、再來就是php的配置檔案php.ini了。比如什麼分配記憶體啦,執行時間長短的設定啦,zend opcache的配置啦,快取輸出,等等。這些東西在我的部落格上有文章,大家有時間可以簡單看下。這些東西本來是該運維來搞的,但是嘞,誰讓我們是萬能的phper呢,所以了解下總沒有錯的。

9、這是最後一點了。那就是萬事按照你的需求來做。在保證解決你的需求的大前提下,你可以使用一些優化的小技巧,比如什麼引入檔案的消耗大小啦,echo的效能比print好啦,種種。但是有乙個前提,就是完成需求。別的都是廢話。還有就是物件導向也不必時時刻刻都考慮這個東西,該用的時候要用,別客氣,先完成功能再說。

好啦,這次寫的就到這裡了,時間不多哈,見諒。。。

如果感覺不錯的話,請多多點贊支援哦。。。

關於PHP錯誤日誌踩過的一些坑

關於php錯誤日誌踩過的一些坑 ddaidai 0.286 2017.08.09 15 45 43 字數 1,009 閱讀 3,534 對於線上的專案來說,錯誤日誌和訪問日誌是至關重要的。學會如何分析日誌找出問題是乙個必備技能。本文就談談關於php的錯誤日誌那些事。phpinfo 中 local v...

安裝ubuntu server 踩過的一些坑記錄

環境介紹 有獨立顯示卡 有裝 win10 系統 順序不代表執行時的順序 遇到的第乙個問題 我把顯示器的 vga 插到了 主機板的核顯上,導致畫面無法顯示 怎麼解決的 因為有裝獨立顯示卡,所以自然是裝到獨立顯示卡上咯 遇到的第二個問題 u盤裡面的 ubuntu server 怎麼裝啊?怎麼解決的 需要...

vue開發元件時踩過的一些坑

近期又完成乙個vue專案,公司好像十分看好vue框架,之後的幾個專案也準備使用vue框架。然而回想起之前,使用vue開發元件時遇到的各種bug,心中一陣後怕。在此記錄下那些填坑的歷程,方便以後查閱。input輸入出現白屏問題 專案要求header部分固定,main部分可以滾動,css3實現main的...