PHP教程系列3-寫PHP程序前必須知道的5點(diǎn)信息

在開始寫第一個(gè)PHP程序之前,我們需要了解文件、硬盤、內(nèi)存、CPU、操作系統(tǒng)。這些都是平時(shí)耳熟能詳?shù)臇|西,通過熟悉的事物來打開編程的大門將更容易。

  1. 文件

    為什么要將文件放在第一個(gè)位置來介紹?因?yàn)槲募褪谴a,無論是編譯前的還是編譯后的代碼,都是文件。圖片是代碼,視頻是代碼,一切電腦上存在的東西都能理解為代碼,只是打開的工具不一樣。.py文件需要Python打開,.php文件需要PHP打開,.html文件需要瀏覽器打開等等。代碼并沒有多神奇,隨處可見。都能用記事本打開,只是『肉眼』這個(gè)解析器能不能讀懂罷了。

  2. 硬盤

    硬盤是我們存放代碼的載體,這里需要對(duì)硬盤的速度有個(gè)概念。硬盤讀寫的速度基本是 45M/秒 (不同硬盤有差異,讀寫也有差異)。一些很大的項(xiàng)目,比如Yii和Laravel源代碼都有60M。理論上每個(gè)請(qǐng)求都要加載這60M代碼,只加載就要1秒多,為什么幾毫秒就能返回結(jié)果呢?這是我們需要思考的問題。當(dāng)然有些PHP項(xiàng)目有幾百M(fèi),但并不影響項(xiàng)目的性能,所以并不是項(xiàng)目文件越大就越慢,這也是需要知道的概念。

  3. 內(nèi)存

    內(nèi)存可以理解為讀寫速度更快的硬盤,我們很多時(shí)候會(huì)把通用的代碼和數(shù)據(jù)放內(nèi)存中,這樣讀取和寫入速度會(huì)更快,減少因?yàn)橛脖P讀寫導(dǎo)致的耗時(shí)。當(dāng)然內(nèi)存資源相比硬盤更昂貴。在Web開發(fā)中,讀寫頻繁和IO密集型操作肯定會(huì)導(dǎo)致內(nèi)存消耗增加。比如我們常說的單機(jī)1萬QPS,大多時(shí)候瓶頸就在內(nèi)存。還有用空間換時(shí)間也是常用的編程技巧,就是使用更多的內(nèi)存來加快計(jì)算。

  4. CPU

    CPU主要用來做計(jì)算,單個(gè)CPU的計(jì)算速度已經(jīng)足夠快,快的內(nèi)存都來不及提供數(shù)據(jù)。比如內(nèi)存一秒能讀取10G數(shù)據(jù),CPU一秒能計(jì)算100G數(shù)據(jù),往往內(nèi)存會(huì)拖慢CPU,所以才有了一級(jí)緩存,二級(jí)緩存,三級(jí)緩存,這些緩存是比內(nèi)存更快的存儲(chǔ)器。因?yàn)椴僮飨到y(tǒng)設(shè)計(jì)的關(guān)系,一個(gè)線程只能使用一個(gè)CPU核心,為了充分利用CPU的多個(gè)核,就需要通過編程來實(shí)現(xiàn),比如通過多進(jìn)程單線程(Nginx)、單進(jìn)程多線程(Memcached)等。在Web編程中,只有遇到密集型的計(jì)算才會(huì)考慮CPU的瓶頸問題,比如加密解密,圖像渲染,機(jī)器學(xué)習(xí)等。其他大部分場(chǎng)景下CPU都不會(huì)成為優(yōu)先考慮的因素。

  5. 操作系統(tǒng)

    操作系統(tǒng)我們每天都在用,它管理著硬件并提供了一個(gè)生態(tài)環(huán)境讓軟件穩(wěn)定運(yùn)行,比如Android,iOS,Windows,Linux等等。編程時(shí)刻都要與操作系統(tǒng)打交道,比如進(jìn)程管理,進(jìn)程間通信,內(nèi)存申請(qǐng),堆棧使用,基于不同的操作系統(tǒng)對(duì)代碼做不同的優(yōu)化等等。這是一門很大的學(xué)問,夸張點(diǎn)來說正是有了操作系統(tǒng)才有了后來編程語言的百花齊放。

介紹了如上信息之后,我們需要帶著問題去編碼,這樣學(xué)習(xí)起來能事半功倍。

  1. 對(duì)于一個(gè)50M大小的PHP項(xiàng)目,如何保證項(xiàng)目不會(huì)隨著文件的增加導(dǎo)致性能下降?關(guān)鍵詞,按需加載
  2. PHP程序如何利用多核CPU?關(guān)鍵詞,php-fpm
  3. PHP程序如何調(diào)用操作系統(tǒng)的進(jìn)程管理方法,生成進(jìn)程,管理進(jìn)程,進(jìn)行進(jìn)程間通信?關(guān)鍵詞,進(jìn)程間通信(與編程語言無關(guān))

在編寫PHP程序的這些年里,無論解決多大的難題都離不開這5個(gè)基礎(chǔ)知識(shí)點(diǎn),整個(gè)Web生態(tài)圈都圍繞著這些點(diǎn)在不停的優(yōu)化。下一篇文章我會(huì)帶著第一個(gè)問題來寫PHP代碼。

如果你喜歡我的文章,請(qǐng)關(guān)注我的博客 PHP教程系列3-寫PHP程序前必須知道的5點(diǎn)信息

喜歡編程的朋友可以關(guān)注我的個(gè)人公眾號(hào),保證每周三篇原創(chuàng)。
程序員編程日志
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 基礎(chǔ)知識(shí) 1.1、 基本概念、 功能 馮諾伊曼體系結(jié)構(gòu)1、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2、順序執(zhí)...
    yunpiao閱讀 5,796評(píng)論 1 22
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,306評(píng)論 2 89
  • 世人多媚骨,唯有君如故。 把自己的世界構(gòu)筑的寬廣,在那其中活出的濃烈而精彩的人生,才是真正被時(shí)光奪不走的永恒快樂。
    千語千竹閱讀 209評(píng)論 0 0
  • 午讀鈴響起,正想走進(jìn)教室,手機(jī)忽然響了起來,打開一看,一個(gè)陌生的號(hào)碼!看看地區(qū)屬于安陽,想來也許是某個(gè)沒存號(hào)碼的家...
    夢(mèng)里飄香閱讀 267評(píng)論 0 1
  • 同一個(gè)月亮,不同的光芒; 同一個(gè)回憶,不同的向往; 同一個(gè)念想,不同的惆悵; 當(dāng)愛己成往事,就要更加珍惜。 湘江明...
    廣東青之旅譚姑娘閱讀 432評(píng)論 0 0

友情鏈接更多精彩內(nèi)容