php技術(shù) 如何查看中級(jí)PHP程序員1.性能好等知識(shí)?(一)php模板技術(shù)smarty第1講
2022-09-30
中級(jí) PHP 程序員
1.
可以流暢地使用腳本完成很多自動(dòng)化任務(wù);awk/sed/perl 也很好用,可以完成大量的文本處理和數(shù)據(jù)統(tǒng)計(jì);基本上可以安裝大部分非特殊程序(包括各種庫(kù)、包、第三方依賴(lài)等,如////SVN等);了解基本服務(wù),了解如何查看性能指標(biāo)數(shù)據(jù),了解以下基本問(wèn)題跟蹤等。
2. :
在第一階段的基礎(chǔ)上,了解更復(fù)雜的配置;包括多核配置,,, /tcp_* 配置,了解超時(shí)等相關(guān)配置和性能影響;知道除了web,還可以承接代理服務(wù)器、反向靜態(tài)服務(wù)器等配置;了解基本的配置調(diào)優(yōu);知道如何配置權(quán)限,編譯擴(kuò)展;知道基本的工作原理(/機(jī)制,),知道為什么性能優(yōu)于性能等;
3. /:
在第一階段的基礎(chǔ)上,在開(kāi)發(fā)方面,掌握很多小技巧,包括常規(guī)SQL優(yōu)化(by/by/rand優(yōu)化等);除了能夠構(gòu)建之外,還可以冷熱備份數(shù)據(jù),知道影響/性能的配置選項(xiàng)(如//ize/等),也知道這些選項(xiàng)配置成什么值合適的; 另外,知道一些特殊的配置選項(xiàng),比如知道如何搭建主從同步環(huán)境,知道區(qū)別;了解性能跟蹤,包括/等,還可以了解索引建立和處理的基本知識(shí);基本了解基本架構(gòu)(+存儲(chǔ)引擎),了解基本/索引存儲(chǔ)結(jié)構(gòu)及區(qū)別(聚集索引、B-tree);了解基本的事務(wù)處理機(jī)制;知道如何處理大多數(shù)異常(或知道在哪里可以找到它們)。如果條件允許,建議了解一下有代表性的數(shù)據(jù)庫(kù),順便比較一下差異。同事可以在合適的應(yīng)用場(chǎng)景中安全謹(jǐn)慎的使用,了解PHP基礎(chǔ)和PHP開(kāi)發(fā)的結(jié)合。
4./:
在大多數(shù)中型系統(tǒng)中,肯定會(huì)涉及到緩存處理,所以必須了解基本的緩存;了解和應(yīng)用場(chǎng)景的異同,能夠獨(dú)立安裝/了解一些基本的特性和限制,比如最大值php技術(shù),了解PHP和它們的組合使用;了解基本工作原理和使用,了解一般數(shù)據(jù)類(lèi)型,了解適用的場(chǎng)景類(lèi)型,了解事務(wù)等等。原理部分可以大致了解內(nèi)存結(jié)構(gòu)(slab機(jī)制),了解常見(jiàn)數(shù)據(jù)類(lèi)型的底層實(shí)現(xiàn)存儲(chǔ)結(jié)構(gòu)(SDS/鏈表//)等,順便了解一下機(jī)制比較好事務(wù)、RDB、AOF 等
5. PHP:
除了第一階段的能力,安裝配置可以自由安裝PHP和各種第三方擴(kuò)展的編譯安裝配置;了解php-fpm的大部分配置選項(xiàng)和含義(如//等影響性能的配置),知道/區(qū)別;在PHP方面,他已經(jīng)能夠精通各種基礎(chǔ)技術(shù),包括各種深入的PHP,包括深入理解PHP面向?qū)ο?SPL/語(yǔ)法層面的反射等特殊特性;閱讀過(guò)至少一個(gè)常規(guī)PHP MVC框架的代碼,了解PHP基礎(chǔ)框架的內(nèi)部實(shí)現(xiàn)機(jī)制和設(shè)計(jì)思路;在PHP開(kāi)發(fā)中,熟練使用常規(guī)設(shè)計(jì)模式進(jìn)行應(yīng)用開(kāi)發(fā)(抽象工廠/單例/觀察者/命令鏈/策略/適配器等模式);建議開(kāi)發(fā)自己的PHP MVC框架,全面放開(kāi)開(kāi)發(fā),讓自己深入了解MVC模式,讓自己在業(yè)務(wù)項(xiàng)目開(kāi)發(fā)中快速升級(jí);熟悉PHP中的各種代碼優(yōu)化方法,熟悉大部分PHP安全問(wèn)題的解決方案;熟悉PHP執(zhí)行的基本機(jī)制(Zend引擎/擴(kuò)展的基本工作機(jī)制);并讓自己在業(yè)務(wù)項(xiàng)目開(kāi)發(fā)中快速升級(jí);熟悉PHP中的各種代碼優(yōu)化方法,熟悉大部分PHP安全問(wèn)題的解決方案;熟悉PHP執(zhí)行的基本機(jī)制(Zend引擎/擴(kuò)展的基本工作機(jī)制);并讓自己在業(yè)務(wù)項(xiàng)目開(kāi)發(fā)中快速升級(jí);熟悉PHP中的各種代碼優(yōu)化方法,熟悉大部分PHP安全問(wèn)題的解決方案;熟悉PHP執(zhí)行的基本機(jī)制(Zend引擎/擴(kuò)展的基本工作機(jī)制);
6. 系統(tǒng)設(shè)計(jì):
能夠設(shè)計(jì)大部分中型系統(tǒng)的網(wǎng)站架構(gòu)、數(shù)據(jù)庫(kù)、基礎(chǔ)PHP框架選型;性能測(cè)試調(diào)查處理等;能夠完成網(wǎng)站的基本設(shè)計(jì)類(lèi)似:瀏覽器->CDN()->+PHP->緩存->數(shù)據(jù)庫(kù)結(jié)構(gòu)網(wǎng)站的開(kāi)發(fā)和維護(hù);可以支持每天數(shù)百萬(wàn)到千萬(wàn)流量的基礎(chǔ)網(wǎng)站的開(kāi)發(fā)和維護(hù);
高級(jí) PHP 程序員
重點(diǎn):除了基礎(chǔ)的LNMP程序外,還可以對(duì)某個(gè)方向或領(lǐng)域進(jìn)行深度學(xué)習(xí)。(深維度開(kāi)發(fā))
目標(biāo):除了能夠完成基本的PHP業(yè)務(wù)開(kāi)發(fā)外,還能夠解決最深入復(fù)雜的技術(shù)問(wèn)題,能夠獨(dú)立設(shè)計(jì)并完成中大型系統(tǒng)設(shè)計(jì)開(kāi)發(fā)工作;能夠獨(dú)立持有并深入某個(gè)技術(shù)方向,在這個(gè)比較專(zhuān)業(yè)。(如任一方向的深入研究、、PHP等)
1. :
除了第二階段的能力,除了常規(guī)的操作和性能監(jiān)控跟蹤,還可以使用很多高級(jí)復(fù)雜的命令來(lái)完成工作(// /ldd/ar等);在腳本方面,編寫(xiě)了更復(fù)雜的腳本(500多行),以協(xié)助完成包括備份、自動(dòng)化處理、監(jiān)控等在內(nèi)的許多任務(wù);awk/sed/perl等應(yīng)用已經(jīng)如火如荼,可以隨意操作控制文本統(tǒng)計(jì),分析各種復(fù)雜格式的數(shù)據(jù);對(duì)機(jī)制有一定了解,對(duì)內(nèi)核模塊加載、啟動(dòng)錯(cuò)誤處理等有基本的處理;同時(shí),我也了解了一些其他相關(guān)的東西網(wǎng)站模板,比如NFS、磁盤(pán)管理等;
2. :
在第二階段的基礎(chǔ)上,已經(jīng)能夠非常熟練的操作了,可以進(jìn)行更深入的運(yùn)維工作,比如監(jiān)控、性能優(yōu)化、復(fù)雜問(wèn)題處理等;根據(jù)個(gè)人興趣,更多方面可以考慮關(guān)注關(guān)于工作原理的深入研究,主要體現(xiàn)在開(kāi)始閱讀源碼,比如具體/工作機(jī)制、內(nèi)部事件處理、內(nèi)存管理、 ETC。; 同時(shí)可以學(xué)習(xí)擴(kuò)展的開(kāi)發(fā),可以自定義一些自己的私有擴(kuò)展;對(duì)lua有一定的了解,看看能不能結(jié)合應(yīng)用更好的模型;這個(gè)階段的要求是對(duì)原理的深刻理解,
3. /:
在第二階段的基礎(chǔ)上,在應(yīng)用方面,除了之前的基礎(chǔ)SQL優(yōu)化外,還可以完成一些復(fù)雜的操作,比如導(dǎo)入導(dǎo)出大數(shù)據(jù),改變?cè)诰€大數(shù)據(jù)的表結(jié)構(gòu),或添加或刪除索引字段等高風(fēng)險(xiǎn)操作;除了安裝配置,已經(jīng)能夠處理更復(fù)雜的問(wèn)題,比如排查各種問(wèn)題,主從同步延遲問(wèn)題的解決,跨機(jī)房同步數(shù)據(jù)的解決方案,高可用架構(gòu)等. 所有涉及的理解;應(yīng)用層,熟悉事務(wù)機(jī)制(隔離層、鎖等)等核心關(guān)鍵技術(shù),對(duì)觸發(fā)器有一定的了解和應(yīng)用,分區(qū)和其他技術(shù);性能方面,包括磁盤(pán)優(yōu)化(SAS遷移到SSD)、服務(wù)器優(yōu)化(內(nèi)存、服務(wù)器配置),此外還有其他核心性能優(yōu)化選項(xiàng)(ze// //eout等),連接池軟件選擇應(yīng)用php技術(shù),深入理解show*(show /show)類(lèi)的操作語(yǔ)句,能夠完成大部分性能問(wèn)題的追溯;深入熟悉備份技術(shù),包括容災(zāi)與恢復(fù),深入理解權(quán)、冷熱備份、多IDC備份等;在原理方面,有更多的了解,比如正確的工作機(jī)制,開(kāi)始閱讀部分源碼,比如學(xué)習(xí)主從同步(復(fù)制)技術(shù)的源碼,或者學(xué)習(xí)理解某個(gè)存儲(chǔ)引擎的源碼(//)等。如果條件允許,可以參考CSV引擎開(kāi)發(fā)自己的簡(jiǎn)單存儲(chǔ)引擎來(lái)保存一些數(shù)據(jù),增強(qiáng)理解;在這個(gè)過(guò)程中,如果你有興趣,也可以考慮向DBA方向發(fā)展。層面上可以考慮,比如在少寫(xiě)多讀的情況下啟動(dòng)在線應(yīng)用,或者做一些在線數(shù)據(jù)分析處理操作。具體的場(chǎng)景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對(duì)于場(chǎng)景下的應(yīng)用,如果有條件或者興趣允許,可以開(kāi)始深入了解工作機(jī)制??梢詤⒖糃SV引擎開(kāi)發(fā)自己的簡(jiǎn)單存儲(chǔ)引擎來(lái)保存一些數(shù)據(jù),增強(qiáng)理解;在這個(gè)過(guò)程中,如果你有興趣,也可以考慮向DBA方向發(fā)展。層面上可以考慮,比如在少寫(xiě)多讀的情況下啟動(dòng)在線應(yīng)用,或者做一些在線數(shù)據(jù)分析處理操作。具體的場(chǎng)景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對(duì)于場(chǎng)景下的應(yīng)用,如果有條件或者興趣允許,可以開(kāi)始深入了解工作機(jī)制。可以參考CSV引擎開(kāi)發(fā)自己的簡(jiǎn)單存儲(chǔ)引擎來(lái)保存一些數(shù)據(jù),增強(qiáng)理解;在這個(gè)過(guò)程中,如果你有興趣,也可以考慮向DBA方向發(fā)展。層面上可以考慮,比如在少寫(xiě)多讀的情況下啟動(dòng)在線應(yīng)用,或者做一些在線數(shù)據(jù)分析處理操作。具體的場(chǎng)景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對(duì)于場(chǎng)景下的應(yīng)用,如果有條件或者興趣允許,可以開(kāi)始深入了解工作機(jī)制。在少寫(xiě)多讀的情況下啟動(dòng)在線應(yīng)用,或者做一些在線數(shù)據(jù)分析和處理操作。具體的場(chǎng)景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對(duì)于場(chǎng)景下的應(yīng)用,如果有條件或者興趣允許,可以開(kāi)始深入了解工作機(jī)制。在少寫(xiě)多讀的情況下啟動(dòng)在線應(yīng)用,或者做一些在線數(shù)據(jù)分析和處理操作。具體的場(chǎng)景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對(duì)于場(chǎng)景下的應(yīng)用,如果有條件或者興趣允許,可以開(kāi)始深入了解工作機(jī)制。
4./:
在第二階段的基礎(chǔ)上,可以更深入地應(yīng)用和學(xué)習(xí)。因?yàn)椴皇翘貏e復(fù)雜,建議閱讀源碼,尤其是內(nèi)存管理部分,便于深入理解;部分,可以做更多復(fù)雜數(shù)據(jù)結(jié)構(gòu)的應(yīng)用(zset用于排序排序操作/事務(wù)處理用于保證原子性秒殺場(chǎng)景應(yīng)用等使用操作);大部分學(xué)習(xí)應(yīng)用涉及到aof等同步機(jī)制,設(shè)計(jì)了高可用的應(yīng)用架構(gòu)和集群;建議深入研究源碼,利用第二階段積累的知識(shí)。可以應(yīng)用,特別是可以閱讀核心事件管理、內(nèi)存管理、內(nèi)部核心數(shù)據(jù)結(jié)構(gòu)等。完全理解。如果興趣允許,你可以成為一個(gè)非常專(zhuān)業(yè)的用戶。
5. PHP:
作為基本核心技能,我們需要在第二階段的基礎(chǔ)上進(jìn)行更深入的學(xué)習(xí)和應(yīng)用。從基礎(chǔ)代碼應(yīng)用的角度,可以解決PHP開(kāi)發(fā)中遇到的95%的問(wèn)題,了解大部分的PHP技巧;大部分PHP框架一天之內(nèi)就能快速上手,了解各種主流PHP框架的優(yōu)勢(shì)。缺點(diǎn)是在項(xiàng)目開(kāi)發(fā)中可以快速方便地進(jìn)行技術(shù)選擇;配置方面,除了常規(guī)二階段會(huì)的知識(shí)外,還會(huì)了解一些比較局部的配置選項(xiàng)(php/),包括擴(kuò)展中的一些復(fù)雜的高級(jí)配置和原理(如擴(kuò)展配置中的.apc,apc) apc擴(kuò)展配置中的./apc./apc.on等);對(duì)php的工作機(jī)制有了更深入的了解,包括php-fpm的工作機(jī)制(比如php-fpm在不同的配置機(jī)器下我們開(kāi)始計(jì)算進(jìn)程數(shù)和原理),對(duì)zend引擎(vm/gc/),閱讀基礎(chǔ)PHP內(nèi)核源碼(或閱讀相關(guān)文章),了解PHP內(nèi)部機(jī)制(基礎(chǔ)Type//)實(shí)現(xiàn)的大部分核心數(shù)據(jù)結(jié)構(gòu),有深入的學(xué)習(xí)和了解核心基礎(chǔ)架構(gòu)(zval//gc);能夠進(jìn)行基本的PHP擴(kuò)展開(kāi)發(fā),了解一些擴(kuò)展開(kāi)發(fā)(/等)的中高級(jí)知識(shí),熟悉php和/的區(qū)別以及通信交互的細(xì)節(jié)(/);除了開(kāi)發(fā) PHP 擴(kuò)展,
6. C/C++:
在第二階段的基礎(chǔ)上,可以對(duì)C/C++語(yǔ)言有更深入的了解,可以完成中小型C/C++系統(tǒng)的開(kāi)發(fā);除了第二階段的基本C/C++語(yǔ)法和數(shù)據(jù)結(jié)構(gòu),還可以學(xué)習(xí)一些特殊的數(shù)據(jù)結(jié)構(gòu)(b-tree/rb-tree//lsm-tree/trie-tree等),方便特殊的工作需要;系統(tǒng)編程,熟悉多進(jìn)程、多線程編程;一些多進(jìn)程通信方式可以靈活選擇通信方式(共享內(nèi)存/信號(hào)量/管道等);多線程編程可以很好的解決鎖沖突問(wèn)題,可以開(kāi)發(fā)調(diào)試多線程程序;熟悉編程,了解多進(jìn)程模型/多線程模型/異步網(wǎng)絡(luò)IO模型的區(qū)別和選擇,熟悉不同異步網(wǎng)絡(luò)IO模型(/poll//iocp等)的原理和區(qū)別小程序開(kāi)發(fā),熟悉常用的異步框架(ACE /ICE ////.ASIO等)和使用,有空的話有時(shí)間,也可以看看一些國(guó)內(nèi)自研的庫(kù)(比如);同時(shí)可以設(shè)計(jì)好的高并發(fā)程序架構(gòu)(-/-等);了解C++后端開(kāi)發(fā)中的大部分C/問(wèn)題(內(nèi)存管理、日志打印、高并發(fā)、前后端通信協(xié)議、服務(wù)監(jiān)控),了解各個(gè)后端服務(wù)的RPC通信問(wèn)題(/http/ /, ETC。); 比較熟悉使用 GCC 和 GDB 用于開(kāi)發(fā)、編譯和調(diào)試程序。在線程序的核心掉線后,問(wèn)題可以快速追蹤解決。
7. 前端:
深入了解HTTP協(xié)議(包括各個(gè)詳細(xì)協(xié)議的特殊協(xié)議代碼及其背后的原因,比如302靜態(tài)文件被緩存,502是后面php掛了等等);除了之前的前端框架應(yīng)用集成能力,前端方面如果有興趣學(xué)習(xí),可以深入了解。形式是可以自己開(kāi)發(fā)一些類(lèi)似的前端框架,或者開(kāi)發(fā)一個(gè)比較瑣碎的Java技能測(cè)試比如富文本編輯器;
8. 其他領(lǐng)域的語(yǔ)言學(xué)習(xí):
我對(duì)基本的PHP/C/C++語(yǔ)言有基本的積累。建議現(xiàn)階段可以嘗試學(xué)習(xí)不同的編程語(yǔ)言,根據(jù)個(gè)人愛(ài)好,可以學(xué)習(xí)腳本語(yǔ)言/Ruby等,函數(shù)式編程語(yǔ)言可以嘗試Lisp///之類(lèi)的,可以嘗試Java/for靜態(tài)語(yǔ)言,可以理解R語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析。如果你想從不同的角度做后端業(yè)務(wù),可以試試 Node.js 和前面提到的組合等等。. 學(xué)習(xí)不同的語(yǔ)言主要是為了提高自己的視野和解決問(wèn)題方法的差異。比如你會(huì)明白,除了進(jìn)程/線程之外,還有輕量級(jí)的協(xié)程;例如,在跨機(jī)通信場(chǎng)景中,解決方案非常簡(jiǎn)單;在不想選擇C/C++的情況下,有類(lèi)似的效率/可用等;主要是改善視力。
9. 其他專(zhuān)業(yè):
在這個(gè)階段,除了基本的LNMP技能外,還會(huì)考慮學(xué)習(xí)一些其他的領(lǐng)域知識(shí)。這些都是可能的,取決于個(gè)人興趣和長(zhǎng)期目標(biāo)。目前可供選擇的領(lǐng)域很多,如云計(jì)算(分布式存儲(chǔ)、分布式計(jì)算、虛擬機(jī)等)、機(jī)器學(xué)習(xí)(數(shù)據(jù)挖掘、模式識(shí)別等,應(yīng)用于統(tǒng)計(jì)、個(gè)性化推薦)、自然語(yǔ)言處理(中文分詞等)、搜索引擎技術(shù)、圖形圖像、語(yǔ)音識(shí)別等。除了這些高級(jí)的,還有很多地方可以學(xué)工程,比如高性能系統(tǒng)、移動(dòng)開(kāi)發(fā)(/IOS)、計(jì)算機(jī)安全、嵌入式系統(tǒng)、硬件等。
10.系統(tǒng)設(shè)計(jì):
系統(tǒng)設(shè)計(jì)基于第二階段。可以應(yīng)用所學(xué)的經(jīng)驗(yàn)和技能,設(shè)計(jì)一個(gè)比較復(fù)雜的中大型系統(tǒng),可以在線解決各種復(fù)雜系統(tǒng)的大部分問(wèn)題,完成類(lèi)似瀏覽器->CDN->負(fù)載均衡->接入層- > +PHP -> 業(yè)務(wù)緩存 -> 數(shù)據(jù)庫(kù) -> 各種復(fù)雜的后端 RPC 交互(存儲(chǔ)后端、邏輯后端、反作弊后端、外部服務(wù)) -> 更多后端江子的復(fù)雜業(yè)務(wù);可以支持每天數(shù)千萬(wàn)到數(shù)億流量的網(wǎng)站的正常開(kāi)發(fā)和維護(hù)。