我在大学时代自学的就是 PHP,第一份工作也是 PHP 开发,用过 php-fpm 也用过 swoole,我甚至给 swoole 贡献过代码,还给 vim 写过一个不错的 php 开发插件
有一段时间我也是什么都想用 php 去实现。应该说 php 是很优秀的语言,很实用,很接地气。但它本质上是一个模板脚本。虽然 php7 相对 php5 性能有不小的提升,终归是解释执行。用来做模板是没有问题的,但用纯 php 做服务就很牵强了。
很多功能纯 php 是做不了的,所以 php 有很多扩展,比如 php-sockets、php-posix、php-pcntl、php-libevent,当你真正要用 php 写服务的时候,少不了要用到这些扩展。但这些扩展都是系统 API 的封装而已,你用了这些扩展,基本上等同于在做系统级的编程了。你要去研究的是 bsd socket api,是 posix api,这时 php 就是一个胶水,把不同的功能连接到一起。你 php 用得越深,你离 php 也就越远。
再说说这个 swoole。swoole 的历史不算短,我也读过它的源码,只能说有可以用,代码质量不是很高。其实 swoole 的功能你也可以使用刚才提到的扩展组合实现。swoole 就是自己起了一个线程负责监听端口,再启一组线程负责数据编解码,再启一组进程执行业务逻辑。swoole 号称的高性能和高并发能力是针对网络 io 而言的。如果你的业务逻辑本身很重,你的工作进程会被持续占用,swoole 的高性能网络框架也是帮不了你的。在这种情形下(这也是我们面临的多数情形),swoole 提供的惟一好处就是常驻内存,无需反复加载资源。这个特性恰恰又可能导致内存泻露。
使用 php 一定会遇到瓶颈,这是 php 本身的局限性导致的。但这并不意味着 php 不值得学习。随着学习的深入,你会掌握越来越多的系统编程思路。时机到了,你终归是要转向其他语言的。
最后需要说的是软件工程。php 写的项目也要讲软件工程,也要讲设计模式,也要讲代码分层,这些东西都是语言无关的。用 php,爱 php,就要认真对待 php。
我们是程序员,面向的是计算机,而不只面向某一种语言。时代在前进,技术在演化,不断学习、终身学习是我们惟一的选择。
学习思路这是非常重要的 加群不定期更新学习资料以及表示面试题 点此加入该群