首頁 頭條 PHP程式設計師如何突破成長瓶頸(php開發三到四年)

PHP程式設計師如何突破成長瓶頸(php開發三到四年)

Jun 27, 2018 pm 04:32 PM

PHP工程師面臨成長瓶頸

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

◆除了PHP不使用其它的語言,可能會點shell 腳本。

◆對PHP的掌握不精(很多PHP手冊都沒有看完,庫除外)。

◆知識面比較窄(面對需求,除開使用PHP和MySQL ,不知道其它的解決方法)。

◆PHP程式碼以流程為主,認為物件導向的實作太繞,看不懂。

這些PHPer在遇到需要高效能,處理高並發,大量資料的專案或業務邏輯比較複雜(系統需要解決多領域業務的問題)時,缺乏思路。不能分析問題的本質,技術判斷力比較差,對於問題較快能找出臨時的解決辦法,但常常在不斷臨時性的解決辦法中,系統和自己一步步走向崩潰。那怎麼提升自己呢?怎麼可以挑戰難度更高的系統?

更高的挑戰在那​​裡?

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

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

◆如何選擇Web伺服器?若要不要使用fast-cgi 模式;

◆要不要使用反向代理服務?選擇全記憶體快取還是硬碟快取?

◆是否需要負載平衡?是基於應用層,還是網路層?如何保證高可靠性?

◆你的PHP程式碼效能如何,使用最佳化工具後呢?效能瓶頸在那裡?是否需要寫成C的擴充?

◆用戶存取有什麼特色,是讀多還是寫多?是否需要讀寫分離?

◆資料如何儲存?寫入速度和讀出速度如何?資料增漲存取速讀如何變化?

◆如何使用快取?怎麼樣考慮失效?數據的一致性怎麼保證?

高複雜性系統的挑戰在那​​裡?

◆能否辨識業務所對應的領域?是一個還是多個?

◆能否合理地對業務進行抽象,在業務規則變化能以很小的代價實現?

◆資料的一致性、安全性可否保證?

◆是否撐握了物件導向的分析與設計的方法

這裡所列出的問題,你都能肯定的回答,說明在技術上你基本上已經可能成為架構師了。如何你還不能回答,你需要在以下幾個方向加強。

怎麼樣提高,突破瓶頸

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

◆分析你所使用的技術其原理和背後運作的機制,這樣可以提高你的技術判斷力,提高你技術方案選擇的正確性;

◆學習大學期間重要的知識, 操作系統原理,資料結構和演算法。知道你以前學習都是為了考試,但現在你需要為自己學習,讓自己知其所以然;

◆重新開始學習C語言,雖然你在大學已經學過。這不僅是因為你可能需要寫PHP擴展,而且還因為,在做C的應用中,有一個時刻關心效能、記憶體控制、變數生命週期、資料結構和演算法的環境;

◆學習物件導向的分析與設計,它是解決複雜問題的有效的方法。學習抽象,它是解決複雜問題的唯一之道。

如何有效的學習是一個大問題。 “以架構為中心,使用用例驅動,迭代開發”,借用這個思想,關於有效的學習的方法,可以這樣來表述:以原理、模型或機制為中心,任務驅動,迭代學習。有點抽象, 舉例來說明如何學習。

目的:學習如何提升處理效能。

可迭代驅動的任務: 透過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擴充的寫作

怎麼決定需要學習的機制和原則呢?怎麼找到驅動學習任務?我對需要學習的東西,都沒有概念,怎麼回答以上的兩個問題?從這個技術的定位來找出需要學習的重點,即它怎麼做到(機制)的和它為什麼能這樣做到。列出這個技術最常見的應用,做為學習的任務,從簡到難實踐。

假如我需要學習JavaScript,我對於HTML,CSS有點感性認識。首要要了解的是,JavaScript是Web領域的動態語言,主要解決網頁的動態互動的。那要學習的要點如下:

◆JavaScript如何與HTML互動 (機制)

◆JavaScript的動態特性在那裡,與其它動態語言有何不同? (語言模型)

如果完全自學,找到需要學習的重點(機制、模型​​、原理) 設定學習任務的確不是那麼容易掌握。如果找到一個有經驗的人來指導你或增加一個學習型的團隊,那麼學習的速度的確會大大提升。

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

熱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

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

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
繼續使用PHP:耐力的原因 繼續使用PHP:耐力的原因 Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

如果session_start()被多次調用會發生什麼? 如果session_start()被多次調用會發生什麼? Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

IIS和PHP的兼容性:深度潛水 IIS和PHP的兼容性:深度潛水 Apr 22, 2025 am 12:01 AM

IIS和PHP可以兼容,通過FastCGI實現。 1.IIS通過配置文件將.php文件請求轉發給FastCGI模塊。 2.FastCGI模塊啟動PHP進程處理請求,提高性能和穩定性。 3.實際應用中需注意配置細節、錯誤調試和性能優化。

session_start()函數的意義是什麼? session_start()函數的意義是什麼? May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

作曲家:通過AI的幫助開發PHP 作曲家:通過AI的幫助開發PHP Apr 29, 2025 am 12:27 AM

AI可以幫助優化Composer的使用,具體方法包括:1.依賴管理優化:AI分析依賴關係,建議最佳版本組合,減少衝突。 2.自動化代碼生成:AI生成符合最佳實踐的composer.json文件。 3.代碼質量提升:AI檢測潛在問題,提供優化建議,提高代碼質量。這些方法通過機器學習和自然語言處理技術實現,幫助開發者提高效率和代碼質量。

使用Laravel:使用PHP簡化Web開發 使用Laravel:使用PHP簡化Web開發 Apr 19, 2025 am 12:18 AM

Laravel優化Web開發流程的方法包括:1.使用路由系統管理URL結構;2.利用Blade模板引擎簡化視圖開發;3.通過隊列處理耗時任務;4.使用EloquentORM簡化數據庫操作;5.遵循最佳實踐提高代碼質量和可維護性。

PHP和IIS:讓他們一起工作 PHP和IIS:讓他們一起工作 Apr 21, 2025 am 12:06 AM

在IIS上配置和運行PHP需要以下步驟:1)下載並安裝PHP,2)配置IIS並添加FastCGI模塊,3)創建並設置應用池,4)創建網站並綁定到應用池。通過這些步驟,你可以在Windows服務器上輕鬆部署PHP應用,並通過配置擴展和優化性能來提升應用的穩定性和效率。

H5:HTML5的關鍵改進 H5:HTML5的關鍵改進 Apr 28, 2025 am 12:26 AM

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。