搜尋
首頁後端開發php教程如何突破PHP程式設計師的技術瓶頸分析

先明確我所指的PHP工程題,是指畢業工作後,主要以PHP進行WEB系統的開發,沒有使用其的語言工作過。工作經驗大概在3~4年,普通的WEB系統(百萬級訪問,千成級數據以內或業務邏輯不是特別複雜)開發起基本得心應手,沒有什麼問題。但他們會這樣的物點: 

除了PHP不使用其它的語言,可能會點shell 腳本。
對PHP的掌握不精(很多PHP手冊都沒有看完,庫除外) 
知識面比較窄(面對需求,除開使用PHP和mysql ,不知道其它的解決辦法) 
PHP代碼以過程為主,認為物件導向的實作太繞,看不懂 
這些PHPer 在遇到需要高效能,處理高並發,大量資料的專案或業務邏輯比較複雜(系統需要解決多領域業務的問題)時,缺少思路。不能分析問題的本質,技術判斷力比較差,對於問題較快能找出臨時的解決辦法,但常常在不斷臨時性的解決辦法中,系統和自己一步步走向崩潰。那怎麼提升自己呢?怎麼可以挑戰難度更高的系統? 

更高的挑戰在那​​裡?結合自己的經驗,我列出一些具體挑戰,讓大家先有個感性的認識。 

高效能係統的挑戰在那​​裡? 

如何選擇WEB伺服器?要不要使用fast-cgi 模式 
要不要使用反向代理服務?選擇全記憶體快取還是硬碟快取? 
是否需要負載平衡?是基於應用層,還是網路層? 如何保證高可靠性? 
你的PHP程式碼效能如何,使用最佳化工具後呢? 效能瓶頸在那裡? 是否需要寫成C的擴充? 
用戶存取有什麼特色,是讀多還是寫多?是否需要讀寫分離? 
資料如何儲存?寫入速度和讀出速度如何? 資料增漲存取速讀如何變化? 
如何使用快取? 怎麼樣考慮失效?數據的一致性怎麼保證? 
高複雜性系統的挑戰在那​​裡? 

能否辨識業務所對應的領域?是一個還是多個? 
能否合理地對業務進行抽象,在業務規則變化能以很小的代價實現? 
資料的一致性、安全性可否保證? 
是否撐握了物件導向的分析和設計的方法 
當我所列出的問題,你都能肯定的回答,我想在技術上你基本上已經可能成為架構師了。如何你還不能回答,你需要在以下幾個方向加強。

如何你還不能回答,你需要在以下幾個方向加強: 

分析你所使用的技術其原理和背後運行的機制,這樣可以提高你的技術判斷力,提高你技術方案選擇的正確性; 
學習大學期間重要的知識, 作業系統原理,資料結構和演算法。知道你以前學習都是為了考試,但現在你需要為自己學習,讓自己知其所以然。 
重新開始學習C語言,雖然你在大學已經學過。這不僅是因為你可能需要寫PHP擴展,而且還因為,在做C的應用中,有一個時刻關心效能、記憶體控制、變數生命週期、資料結構和演算法的環境。 
學習物件導向的分析與設計,它是解決複雜問題的有效的方法。學習抽象,它是解決複雜問題的唯一之道。 
"這麼多的東西怎麼學,這得學多久呀" ?如果你努力的話,有較好的規劃,估計需要1~2年的時間。 

如何有效的學習是一個大問題。 自己有些實踐但很零散,不好總結。昨天晚上睡覺前,突然想到了RUP的核心,"以架構為中心,用例驅動,迭代開發",借用這個思想,關於有效的學習的方法,可以這樣來表述:以原理、模型或機制為中心,任務驅動,迭代學習。 

有點抽象, 舉例說明如何學習。目的: 學習如何提升處理效能。 

可迭代驅動的任務: 透過IP找到所在地域。 

這是WEB應用常見的任務,IP資料庫是10左右萬行的記錄。 

第一次迭代: 在不考慮效能的情況下實現功能(透過PHP來實現)。因為無法直接透過KEY(IP)進行查找地域,所以直接放到資料或透過關聯數組這種簡單的方法都是不行的。想法還是先把資料排序,然後再進行查找。 

如何透過IP來尋找? 已序的數據,二分查找是最快的。 
如何排序?用函式庫函數sort當然 是可以,但是即然是學習,那還是自己實作快速排序吧。 
學習目標: 排序演算法,找出演算法。 

PHPer 一般資料結構和演算法基礎比較差,平常也沒有這方面的任務,自己也不學習,因此這方面的知識很缺乏。但是,程式設計解決的問題,最終都會歸結到資料結構和對這種資料結構操作的演算法。如果資料結構演算法常在心中,那麼遇到問題就能清楚認知到它內在的結構,解決方法就會自然產生。 

第二次迭代:最佳化資料的載入與排序。如果做到第一步,基本上還是不可用,因為資料每次都需要的載入和排序,這樣太耗時間。 解決的想法是,資料一次載入排序後,放到每個PHP進程能存取到的地方。 

放到memcache 這是大家容易想到問題。其實放到共享記憶體(EA等加速器都支援)中是更快的方式,因為memcache還多了網路操作。 資料是整體放入到共享內存,還是分塊放入,如何測試性能? 如何分析瓶頸所在(xdebug)? 在這些問題的驅動下你會學習到。 

學習目標: 偵測、定位、最佳化PHP效能的方法; PHP實現結構對效能的影響。 

第三次迭代: 寫出PHP的延伸。性能還是上不去,不得不進入C/C++的世界了,不過從此你將不只是PHPer 而服務端的全能型工程師,當然這對沒有做過C/C++的同學挑戰是巨大的。 我這裡無法再簡單來說如何學習C/C++ ,可以參考 《PHP程式設計師學習C++》 

學習目標:C/C++的學習,PHP擴充的編寫 

怎麼確定需要學習的機制和原理呢? 怎麼找到驅動學習任務?我對需要學習的東西,都沒有概念,怎麼回答以上的兩個問題?

從這個技術的定位來找出需要學習的重點,即它怎麼做到(機制)的和它為什麼能這樣做到(模型或原理) 
列出這個技術最常見的應用,做為學習的任務,從簡到難實踐。 
假如我需要學習Javascript ,我對於HTML,CSS有點感性認識。首要我了解到,JS 是WEB領域的動態語言,主要解決網頁的動態互動的。那我要學習的重點如下: 

JS如何與HTML 互動 (機制) 
JS的動態特性在那裡,與其它動態語言有何不同? (語言模式) 
如果完全自學,找到需要學習的重點(機制、模型​​、原理) 設定學習任務的確不是那麼容易掌握。如果找到一個有經驗的人來指導你或增加一個學習型的團隊,那麼學習的速度的確會大大提升。 

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
高流量網站的PHP性能調整高流量網站的PHP性能調整May 14, 2025 am 12:13 AM

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

PHP中的依賴注入:初學者的代碼示例PHP中的依賴注入:初學者的代碼示例May 14, 2025 am 12:08 AM

你應該關心DependencyInjection(DI),因為它能讓你的代碼更清晰、更易維護。 1)DI通過解耦類,使其更模塊化,2)提高了測試的便捷性和代碼的靈活性,3)使用DI容器可以管理複雜的依賴關係,但要注意性能影響和循環依賴問題,4)最佳實踐是依賴於抽象接口,實現鬆散耦合。

PHP性能:是否可以優化應用程序?PHP性能:是否可以優化應用程序?May 14, 2025 am 12:04 AM

是的,優化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)優化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,並避免使用

PHP性能優化:最終指南PHP性能優化:最終指南May 14, 2025 am 12:02 AM

theKeyStrategiestosigantificallyBoostPhpaPplicationPerformenCeare:1)UseOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)優化AtabaseInteractionswithPreparedStateTementStatementStatementAndProperIndexing,3)配置

PHP依賴注入容器:快速啟動PHP依賴注入容器:快速啟動May 13, 2025 am 12:11 AM

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

PHP中的依賴注入與服務定位器PHP中的依賴注入與服務定位器May 13, 2025 am 12:10 AM

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

PHP性能優化策略。PHP性能優化策略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

PHP電子郵件驗證:確保正確發送電子郵件PHP電子郵件驗證:確保正確發送電子郵件May 13, 2025 am 12:06 AM

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用