作者GALINE (天真可爱CQD)
看板PHP
标题Re: 深入php
时间Fri Feb 27 18:24:39 2015
※ 引述《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 卡住...
这时候回头,你发现你光是要「知道」有这些事情,就得读过一大堆东西
而为了作到上面这些事情,可能还得再看七十本书跟八百篇文章
大量阅读不同的东西,对於进阶非常重要
然後,我问你说:「为什麽不找云端(写作云端读作外包)服务呢?」
你开始摔电脑
--
______ ____________________________________ _ _-_ _ ___
/ __||____________________________________| _|_|.---'---`---.|_|_ |___)
|___| Let it go! Let it go! \----._________.----/
___ Where no man has gone before! `. `]-[' ,'
| |__ _________________________________________ `.' _ `.' ________
\______||_________________________________________| |_(_)_| |________)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.227.13.136
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1425032685.A.D02.html
1F:推 MOONRAKER: 摔电脑 XD Whack the console like hell!! 02/28 00:47
2F:推 iamnodoubt: 推~ 02/28 03:54
3F:推 guest62: 推 02/28 04:04
4F:推 backfish: 推 02/28 08:14
※ 编辑: GALINE (61.227.13.136), 02/28/2015 09:01:57
5F:推 et282523: 推~ 02/28 10:55
6F:推 pptinmylife: 推~~~ 02/28 21:06
7F:推 altecjc: 推 02/28 23:43
8F:推 studentjason: 然後开始会看到memcache,APC…把一些工作用 cronjo 02/28 23:52
9F:→ studentjason: b 排到半夜去做…等等 02/28 23:52
10F:推 LEwww1290: 推XD 03/01 00:59
11F:推 newton2009: 推 03/01 09:28
12F:推 kenwufederer: 蛮中肯的…基本上使用者数量会是重点 03/01 14:39
13F:→ kenwufederer: 其他什麽技术都一直变,要每天注意阅读 03/01 14:39
14F:推 Kenqr: 推! 03/01 16:41
15F:→ y2468101216: 推 03/01 16:56
16F:推 j87b0003: 好婊XD 03/01 22:31
17F:推 kitehero: 你的图好精美啊 03/02 13:51
18F:推 nvizero: 大神-推推 03/02 14:01
19F:推 gname: 你一定是平行世界的我! 你说的流程我都走过了...= = 03/03 09:06
20F:推 commenbear: 好文推 03/04 16:26
21F:推 marklaiw: 好有即视感 XD 03/06 16:39
22F:推 klt: 朝圣推 03/09 15:50
23F:推 yoyock: 每样都做过....好像在回忆 03/20 20:15
24F:推 MusicD: 最後一句大爆笑 04/03 09:27