PHP程序員的技術成長規劃 第二階段:提升階段

第二階段:提升階段 (中級PHP程序員)

重點:提升針對LNMP的技能,可以更全面的對LNMP有熟練的應用。
目標:可以隨時隨地搭建好LNMP環境,快速完成常規配置;可以追查解決大部分遇到的開發和線上環境的問題;可以獨立承擔中型系統的構架和開發工做;可以在大型系統中承擔某個中型模塊的開發工做;

1. Linux:
在 第一階段的基礎上面,可以流暢的使用Shell腳原本完成不少自動化的工做;awk/sed/perl 也操做的不錯,可以完成不少文本處理和數據統計等工做;基本可以安裝大部分非特殊的Linux程序(包括各類庫、包、第三方依賴等等,好比 MongoDB/Redis/Sphinx/Luncene/SVN之類的);瞭解基本的Linux服務,知道如何查看Linux的性能指標數據,知道基 本的Linux下面的問題跟蹤等。

2. Nginx:
在第一階段的基礎上面,瞭解複雜一些 的Nginx配置;包括 多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超時等相關配置和性能影響;知道nginx除了web server,還可以承擔代理服務器、反向靜態服務器等配置;知道基本的nginx配置調優;知道如何配置權限、編譯一個nginx擴展到nginx;知 道基本的nginx運行原理(master/worker機制,epoll),知道爲何nginx性能比apache性能好等知識;

3. MySQL/MongoDB:
在 第一階段的基礎上面,在MySQL開發方面,掌握不少小技巧,包括常規SQL優化(group by/order by/rand優化等);除了可以搭建MySQL,還可以冷熱備份MySQL數據,還知道影響innodb/myisam性能的配置選項(好比 key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit等),也知道這些選項配置成爲多少值合適;另外也瞭解一些特殊的配置選項,好比  知道如何搭建mysql主從同步的環境,知道各個binlog_format的區別;知道MySQL的性能追查,包括slow_log/explain 等,還可以知道基本的索引創建處理等知識;原理方面瞭解基本的MySQL的架構(Server+存儲引擎),知道基本的InnoDB/MyISAM索引存 儲結構和不一樣(聚簇索引,B樹);知道基本的InnoDB事務處理機制;瞭解大部分MySQL異常狀況的處理方案(或者知道哪兒找處處理方案)。條件容許 的狀況,建議瞭解一下NoSQL的表明MongoDB數據庫,順便對比跟MySQL的差異,同事可以在合適的應用場景安全謹慎的使用MongoDB,知道 基本的PHP與MongoDB的結合開發。

4. Redis/Memcached:
在大部分 中型系統裏面必定會涉及到緩存處理,因此必定要了解基本的緩存;知道Memcached和Redis的異同和應用場景,可以獨立安裝 Redis/Memcached,瞭解Memcahed的一些基本特性和限制,好比最大的value值,知道PHP跟他們的使用結合;Redis瞭解基本 工做原理和使用,瞭解常規的數據類型,知道什麼場景應用什麼類型,瞭解Redis的事務等等。原理部分,可以大概瞭解Memcached的內存結構 (slab機制),redis就瞭解經常使用數據類型底層實現存儲結構(SDS/鏈表/SkipList/HashTable)等等,順便了解一下Redis 的事務、RDB、AOF等機制更好

5. PHP:
除了第一階段的能力,安裝配置方面可以隨意 安裝PHP和各類第三方擴展的編譯安裝配置;瞭解php-fpm的大部分配置選項和含義(如max_requests/max_children /request_terminate_timeout之類的影響性能的配置),知道mod_php/fastcgi的區別;在PHP方面已經可以熟練各 種基礎技術,還包括各類深刻些的PHP,包括對PHP面向對象的深刻理解/SPL/語法層面的特殊特性好比反射之類的;在框架方面已經閱讀過最少一個以上 常規PHP MVC框架的代碼了,知道基本PHP框架內部實現機制和設計思想;在PHP開發中已經可以熟練使用常規的設計模式來應用開發(抽象工廠/單例/觀察者/命 令鏈/策略/適配器 等模式);建議開發本身的PHP MVC框架來充分讓開發自由化,讓本身深刻理解MVC模式,也讓本身可以在業務項目開發裏快速升級;熟悉PHP網站源碼的各類代碼優化方法,熟悉大部分PHP安全方面問題的解決處理;熟悉基本的PHP執行的機制原理(Zend引擎/擴展基本工做機制);推薦PHP視頻教程https://www.sucaihuo.com/video/143-0-0

6. C/C++:
開 始涉獵必定的C/C++語言,可以寫基本的C/C++代碼,對基本的C/C++語法熟悉(指針、數組操做、字符串、常規標準API)和數據結構(鏈表、 樹、哈希、隊列)有必定的熟悉下;對Linux下面的C語言開發有基本的瞭解概念,會簡單的makefile文件編寫,可以使用簡單的GCC/GDB的程 序編譯簡單調試工做;對基本的網絡編程有大概瞭解。(本項是爲了向更高層次打下基礎)

7. 前端:
在 第一階段的基礎上面,熟悉基本的HTTP協議(協議代碼200/300/400/500,基本的HTTP交互頭);條件容許,能夠在深刻寫出稍微優雅的 HTML+CSS+JavaScript,或者可以大體簡單使用某些前端框架(jQuery/YUI/ExtJS/RequireJS /BootStrap之類);若是條件容許,能夠深刻學習JavaScript編程,好比閉包機制、DOM處理;再深刻些能夠讀讀jQuery代碼作深刻學習。(本項不作重點學習,除非對前端有興趣)

8. 系統設計:
能 夠設計大部分中型系統的網站架構、數據庫、基本PHP框架選型;性能測試排查處理等;可以完成相似:瀏覽器 -> CDN(Squid) -> Nginx+PHP -> 緩存 -> 數據庫 結構網站的基本設計開發維護;可以支撐天天數百萬到千萬流量基本網站的開發維護工做;php

相關文章
相關標籤/搜索