V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
elarity
V2EX  ›  PHP

写了一些比较少见的 PHP 教程,欢迎指正批评

  elarity · 2018-05-05 19:17:03 +08:00 · 11211 次点击
这是一个创建于 2393 天前的主题,其中的信息可能已经有所发展或是发生改变。

一开始博客都是在 cnblog,大多数复制粘贴,一小部分是自己写,主要功能就是记录记忆功能

后来整理了一些有用的部分,然后自己又写了一些,基本都是关于 php 的多进程、socket 以及 stream 相关的一些教程,放到了 github 上,当然,目前还在继续更新中,这是一个长期的活儿。

github 地址: https://github.com/elarity/advanced-php

欢迎指出其中错误的地方!

第 1 条附言  ·  2018-05-06 16:38:15 +08:00
有很多网友都在下面评论一些内容,其实跟我预想的差不多,这些网友说的内容几乎都是一致的,总结起来就是一句话:“ PHP 不适合做这个 ”。我不太爱争论,但也不太喜欢被这种论调充满楼宇间,因为你的言论可能会影响到其他想深入学习 php 的人。

所以,总结几点:
1. 至于 PHP 合不合适做 socket 这种场景,参考 https://www.v2ex.com/t/170206,总是有现身说法的
2. 但是,作为辩论,我认输并承认“ php 不适合干这个 ”,所以你们都赢了,不必再论了
3. 有些网友说要多学几门语言,那个,我也是会一些 GO 和 C 语言的,所以不必为我担心眼界过窄的问题
第 2 条附言  ·  2018-05-06 16:46:00 +08:00
本来想深入看下 php,但是由于看了评论后对 php 产生质疑和动摇的同学,我转贴过一段话,希望能坚定你们的想法。

--------------------------------------------分割线----------------------------------------------
呵呵,本来不想暴露隐私,没想到隐藏下公司名给你带来这么大的猜疑。

那我就说下吧,主要拿事实说话
本人名字叫李亮,是 Workerman 开源框架的作者,曾经在腾讯朋友、QQ 相册、QQ 空间做 Coder 工作。目前在聚美优品工作

1、腾讯朋友
我 2010 年毕业后第一份工作,持续 2 年左右。朋友网的后端开发全部是 PHPer,朋友网使用的 Server (当然不包括底层存储 Server )也几乎都是 PHP 写的,包括 Webserver ( PWS )、SOA 服务器( PSF )、消息队列服务器( SAPS )。这些 PHP 写的 Server 部署超过千台,对,你没看错,超过千台的部署规模,具体可以参见 PHP 技术峰会 韩天峰 的 PPT 介绍或者视频录像。现在去朋友网抓下 http 头,还能看到 Server:Tencent/PWS 标识。

2、QQ 相册
在朋友网任职期间曾负责 photo.qq.com 相册改版工作,同样除了底层存储,其他 Server 全部是用朋友网的那一套 PHP 写的 Server 部署的。由于 photo.qq.com 功能模块不复杂,所有 Server 只部署了十几台支撑了每天 5000W 左右的 pv

3、QQ 空间
QQ 空间的开发都是写 C/C++的,但是同样也部署了不少 PHP 写的 Server,具体部署多少太不详,因为我只在 QQ 空间做了半年的开发。

前一阵看到 CSDN 关于企业 QQ 架构的专访,其中也说到了 PHP 写的 Server 在架构中的各种运用,这个是链接
http://www.csdn.net/article/2014-08-21/2821302-interview-tecent-b-qq-shuai-wang

我目前在聚美优品工作,聚美优品的后端 Server (除了存储)几乎都是基于我写的 PHPServer 运行的,所有业务系统加起来确实有几百台。为何用这么多机器,我想你也应该知道原因了,聚美优品的限时抢购业务决定的,抢购的瞬时请求量非常恐怖,不用这么多机器,网站瞬间瘫痪了。

我待过的两家上市公司都有过这么大 PHP server 的部署规模,相信你不用再猜疑了。

为何这些大公司热衷于 PHP 写的 Server 呢,而不转 golang/erlang, 我想大概有以下原因:
1、首先是 PHP 写的 Server 和 golang/erlang 等语言写的 Server 在性能上没有多大的差距,尤其是业务中涉及频繁的 IO 操作时,比如 mysql 数据库等存储。性能差距一般只有在 CPU 密集型计算时才会显示出来,当然编译型的语言肯定胜出,其他脚本语言差距仍然不太大。

2、大公司某个项目的开发人员众多,当新增一个语言时会给开发工程师和运维工程师以及项目管理带来巨大的挑战和风险

3、PHP 在 Web 容器下运行确实有很大的性能损耗,包括 apache、nginx 等 Web 容器自身的开销、Web 容器与 PHP 通讯的开销,Web 容器下 PHP 自身每个请求周期反复初始化执行环境最后有销毁一切的开销等。为了避免这些问题,使得 PHP 开发者去用 PHP 实现自己的 Server

4、PHP 的开发效率非常高,例如朋友网 20 多个 PHPer 每天都发布版本很多版本,有时候我自己一天都会发布几个版本。使用 PHP 能够快速开发迭代,迅速占领市场。自然用 PHP 写 Server 也会带来开发效率大大提升的好处。


@zhengkai 说的没错,什么语言适合做什么事情,但我要说的是 PHP 也同样适合写 Server,如果能用合适的又是大家熟悉的语言去做效果会更好。

最后建议 @zhengkai 不要道听途说,“相信业界主流认识是 PHP 不是用来干这个的”,请实践后再下结论。在我看来腾讯以及我现在所在的公司对 PHP 写的 Server 的大规模部署和实践应该足以说明 PHP 同样适合干这个。

--------------------------------------------分割线----------------------------------------------
第 3 条附言  ·  2018-05-08 11:21:43 +08:00
我不是 wm 作者,
我不是 wm 作者,
我不是 wm 作者
104 条回复    2021-05-10 23:35:37 +08:00
1  2  
FYK
    101
FYK  
   2018-05-08 16:54:02 +08:00
@chenxytw
@elarity

感谢回复~ 又接触了新知识,一时没办法理解透彻,我回头自己再多琢磨琢磨。

再次感谢~~
pandakon
    102
pandakon  
   2018-05-14 00:24:01 +08:00
感谢分享 👍
echo404
    103
echo404  
   2018-05-22 18:42:57 +08:00
mark
CODEWEA
    104
CODEWEA  
   2021-05-10 23:35:37 +08:00
支持 同样是线上用 workman 的 游戏行业
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2719 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 04:14 · PVG 12:14 · LAX 20:14 · JFK 23:14
Developed with CodeLauncher
♥ Do have faith in what you're doing.