Re: 深入php

作者: GALINE (天真可愛CQD)   2015-02-27 18:24:39
※ 引述《nvizero (victor.st)》之銘言:
: 要進一步深入了解Php有什麼資源可以找嗎?
雖然直覺是想到這個
http://laravel-taiwan.github.io/php-the-right-way/
不過一來這篇文章感覺不算好啃(或許是翻譯問題,有些用詞偏大陸習慣)
二來...或許你真的想要深入了解的,是作網站這件事?
這個角度來說,你會需要大量閱讀各種資訊
而且很多時候會是英文資訊...
畢竟作網站這件事可以扯到的東西還滿多的,你得什麼都懂一些
下面萬人上線的例子會提到
以目前來說,我一下有想到幾個中文資訊來源可以推薦
http://blog.longwin.com.tw/
http://blog.wu-boy.com/
https://blog.gslin.org/
http://www.solidot.org/ (簡中,而且資訊也不只是程式,但內容品質不錯...)
長期閱讀這些內容,然後你可能會從這些地方發現其他不錯的東西可以看
如果你開始發現「我需要能夠有效率的看一大堆網站的文章的方法」
你需要的解答是「RSS 閱讀器」
: 要怎麼解決多人同時上線的問題
: 幾萬人同時上線的問題
: 還有效能
想像今天你老闆叫你作一個色情網站
一開始,大家都是用一台電腦同時跑 Web Server 跟 DB 跟其他所有東西
Appserv 多方便啊,點點點就搞定了。
_________ ________
| | | |
| 使用者們| <===> | 無雙機 |
|_________| |________|
然後網站越作越大,使用者越來越多,你的機器越跑越慢
現在你的機器天天 CPU 100%,網路流量滿載,一個打不了十個
一台機器不夠用,那就用兩台嘛
於是開始把 Web Server 跟 DB 分開各自的機器,現在是兩台機器在處理一個使用者
一台處理 web 一台處理資料,好像快多了
_________ ________ _______
| | | | | |
| 使用者們| <===> | 網頁機 | <===> | 資料庫|
|_________| |________| |_______|
結果過沒多久又慢了,對外流量又滿了,DB 的 CPU 負載又 100% 了
兩台機器不夠用,那就用多加幾台嘛
不過等等,web server 要怎麼拆成兩台還能當同一個網站用?
DB 又要怎麼拆成兩台還能資料同步兩邊同時用?
所以 Web Server 這邊你要開始搞 Load Balancing
像是用 DNS 設定同一個網址多台機器,或是買一台貴鬆鬆的 Load Balancer
DB 這邊你會開始搞 master-slave replication,或是弄成 Cluster
_________ ________ _______ _______
| | | | | | 同步 | |
| 使用者們| <====> | 網頁機 | <===\ | 資料庫| <====> | 資料庫|
|_________| || |________| || |_______| |_______|
|| ________ || /\ /\
|| | | || || ||
| => | 網頁機 | <== =======================/
|| |________| ||
|| ________ ||
|| | | ||
\==> | 網頁機 | <===/
|________|
然後使用者開始抱怨登入有問題
你被老闆電了三天之後才想到「啊,慘,不同的機器讀不到彼此的 session」
於是你得改 session handler,讓把 session 存到大家共通的地方
也許是DB,也許是網頁機都讀的到的網路硬碟,或者是...其他的什麼東西
_________ ________ _______ _______
| | | | | | 同步 | |
| 使用者們| <====> | 網頁機 | <===\ | 資料庫| <====> | 資料庫|
|_________| || |________| || |_______| |_______|
|| ________ || /\ /\
|| | | || || ||
| => | 網頁機 | <== =======================/
|| |________| || ||
|| ________ || \/
|| | | || _________
\==> | 網頁機 | <===/ | |
|________| | Session |
|_________|
接下來不知道是幸運還是不幸運,你的使用者還是一直增加,機器負載越來越高
你跟老闆說還想加機器,但是老闆生氣了
「之前加五台機器花了我一萬塊,現在你跟我說不夠,坑我啊?自己想辦法」
所以你只好開始拍腦袋燒肝臟,從其他方面下手
因為色情網站上面的文章基本上都不會修改,每次跑出來結果都一樣
所以不需要每次跑全部的程式邏輯,而是第一次執行的時候把 HTML 存起來,之後有人看
同一篇文章的時候直接抓出現成的 HTML 就好,甚至不用戳主 DB
因為使用者常常是連續看文章,你想到 HTML 好像會一直重複傳,所以你想到可以把頁面
改成用 AJAX,只傳變動的文章內容就好,於是流量稍微降下來一點,網頁也好像變快一點
因為圖片使用是大宗。吐靜態圖片其實不太耗 CPU,但是硬碟讀取速度有差。
於是你想到拿 CPU 最爛的機器配最好的硬碟,這台機器專心吐圖片,而跑 PHP 的機器
給他 CPU 配好一點
在改 code 讓圖片走自己的專門網址的時候,你發現你一開始寫的 SQL 有問題
會讓 DB table scan,於是你在對 table 加了 index,DB 存取速度又快了
原本 Session 跟頁面 cache 都放在硬碟上,然後你想到說如果把資料放在 RAM 裡面
搞不好跑更快,於是你在這台機器上面裝了 memcache
因為你看老闆很不爽,又不知道能怎麼婊他,於是你趁他不在的時候把他桌上接電腦網路
的亮晶晶 switch 跟色情網站用的 switch 換過來,然後發現網站也莫名其妙變快了。
原來老闆自己用的 switch 比網站用的好,網站讀資料的速度被爛 switch 卡住...
這時候回頭,你發現你光是要「知道」有這些事情,就得讀過一大堆東西
而為了作到上面這些事情,可能還得再看七十本書跟八百篇文章
大量閱讀不同的東西,對於進階非常重要
然後,我問你說:「為什麼不找雲端(寫作雲端讀作外包)服務呢?」
你開始摔電腦
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-02-28 00:47:00
摔電腦 XD Whack the console like hell!!
作者: iamnodoubt (Have Fun)   2015-02-28 03:54:00
推~
作者: guest62 (guest62)   2015-02-28 04:04:00
作者: backfish (121)   2015-02-28 08:14:00
作者: et282523 (不屈鬥志)   2015-02-28 10:55:00
推~
作者: pptinmylife (新竹劉德華)   2015-02-28 21:06:00
推~~~
作者: altecjc (嘉誠)   2015-02-28 23:43:00
作者: studentjason (studentjason)   2015-02-28 23:52:00
然後開始會看到memcache,APC…把一些工作用 cronjob 排到半夜去做…等等
作者: LEwww1290 (0.0)   2015-03-01 00:59:00
推XD
作者: newton2009 (好瘦唷QQ)   2015-03-01 09:28:00
作者: kenwufederer (Nash)   2015-03-01 14:39:00
蠻中肯的…基本上使用者數量會是重點其他什麼技術都一直變,要每天注意閱讀
作者: Kenqr (function(){})()   2015-03-01 16:41:00
推!
作者: y2468101216 (芸)   2015-03-01 16:56:00
作者: j87b0003 (I'm 邱老虎)   2015-03-01 22:31:00
好婊XD
作者: kitehero (噁Python仄Py狼)   2015-03-02 13:51:00
你的圖好精美啊
作者: nvizero (victor.st)   2015-03-02 14:01:00
大神-推推
作者: gname ((′口‵)↗︴<><...<><)   2015-03-03 09:06:00
你一定是平行世界的我! 你說的流程我都走過了...= =
作者: commenbear (commenbear)   2015-03-04 16:26:00
好文推
作者: marklaiw (漂亮的房子)   2015-03-06 16:39:00
好有即視感 XD
作者: klt (klt)   2015-03-09 15:50:00
朝聖推
作者: yoyock (YOYO)   2015-03-20 20:15:00
每樣都做過....好像在回憶

Links booklink

Contact Us: admin [ a t ] ucptt.com