PHP面經

來源:互聯網
上載者:User

本篇文章介紹的內容是關於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的區別


出了錯誤處理不同外,別的地方都是相同的。require產生一個致命錯誤,指令碼會停止運行。include會產生警示,但是指令碼會繼續運行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.