首頁  >  文章  >  後端開發  >  關於PHP的一些知識經驗分享

關於PHP的一些知識經驗分享

零到壹度
零到壹度原創
2018-04-14 17:45:071300瀏覽

這篇文章給大家分享的內容是關於PHP面試的一些知識經驗分享,有著一定的參考價值,有需要的朋友可以參考一下

  • CORS(cross origion resource sharing)跨域資源共享,可以允許跨站請求資源。客戶端需要用特定的方法去請求資源(如xmlhttprequest)同時需要帶上特定的報文頭信息,服務端也要支援跨域的資源請求

memcache和redis的異同點

  • memcache可以利用多線程,吞吐量高,適合大訪問量

  • memcache只支援簡單的key/value結構

  • memcache無法將資料持久化,且沒法備份,只能用於緩存,重啟後資料遺失

  • 由於memcache支援多線程操作,所以要考慮資料一致性的問題,使用的是cas(check and set)樂觀鎖

  • #redis由於是單形成,所以可以保證操作的有序性

  • redis支援多種資料結構,key/value,list,set,zset,dict等

  • redis資料可以持久化存儲,可以將資料儲存在磁碟中,再次重新啟動時可以讀取出來

  • redis支援資料備份,即master-slave模式的資料備份

web專案高並發解決方案

  • html靜態化,將常用但是更新很少的資料靜態化

  • 圖片伺服器分離,避免影響應用程式伺服器,同時可以針對圖片伺服器進行單獨的配置最佳化,快取設定等

  • #資料庫集群,庫表雜湊

    • 資料庫集群,可以實現讀寫分離,提高資料庫回應速度,一般為一主多從,或x主y從。例如寫少讀多時,一個伺服器專門用來寫操作,別的伺服器用來讀取操作,這樣可以避免讀寫鎖的影響。不過寫入操作完成後,資料需要同步。

    • 資料庫叢集還有個好處是,當一處資料庫伺服器宕機,別的伺服器上也有完整的資料

    • 分散式資料庫,系統中有多個節點,每個節點完成不同的功能,某個節點掛掉,那麼對應的功能就沒辦法完成了。

    • 資料庫叢集和分散式資料庫的差異。假如一個任務一個節點需要1小時完成,現在有10個這樣的任務,以及10個節點。分散式資料庫可把任務拆分稱10個任務,每個節點完成不同的任務,不考慮子任務的依賴,一個小時後所有任務完成。資料庫叢集中每個節點都可以完成完整的任務,它可以將10個任務平均到每個節點上,這樣也是一個小時後所有任務完成。

    • sql優化

    • 表內資料過多,則可以考慮將表拆分,再用hash映射

    • #索引最佳化

  • 快取

  • #鏡像,用於提高存取速度

  • #負載平衡,解決高並發和大量存取問題

  • CDN,讓使用者存取最近的cdn伺服器,獲得最快速的回應

  • 資料壓縮

PHP

魔術方法

  • __set/__get 處理類別中不存在的屬性

  • __call/_callStatic 呼叫類別中不存在的方法/靜態方法時會觸發。 __callStatic本身也得宣告成靜態方法

  • ##__toString 將物件轉換成字串輸出

  • __invoke 把物件當成函數去執行

require和include的差異

  • include函數:會將指定的檔案讀入並且執行裡面的程式;

  • require函數:會將目標檔案的內容讀入,並且把自己本身代換成這些讀入的內容;

  • include_once 函數:在腳本執行期間包含並運行指定檔案。此行為和 include 語句類似,唯一差異是如果該檔案中已經包含過,則不會再次包含。如同此語句名字暗示的那樣,只會包含一次;

  • require_once 函數:和require 語句完全相同,唯一區別是PHP 會檢查該文件是否已經被包含過,如果是則不會再次包含。

  • 使用include_once或require_once會讓程式效率降低,因為載入檔案前會先去檢索已載入檔案表裡是否已載入該檔案

  • #include一個不存在的檔案時只會產生告警,require不存在的檔案時會直接拋出致命錯誤,腳本停止

  • include是有條件包含函數,require是無條件包含函數。即,如果include或require外層有if條件,當if為false時,include不會包含,只有為真時才會包含文件,而require無論真假都會包含文件進來

return時為何不能帶括號

  • return只是語言結構,不是函數,沒必要將回傳值用括號括起來,括起來反而會降低效率

  • 如果傳回值不提供參數,此時回傳null,此時一定不能帶括號。如果帶括號會造成解析錯誤

  • 當傳回變數的參考的時候一定不能帶括號。否則會變成傳回引用的值,而不是引用本身

PHP弱型別變數機制

fast_cgi

php_fpm

#################################### php5 php7差別###

以上是關於PHP的一些知識經驗分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn