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