我为什么不看好 PHP ? 转载看了有点糟心

栏目: PHP · 发布时间: 6年前

我为什么不看好 PHP ?

讲道理来说对 php 还是蛮有感情的,从第一次看到 HHVM,swoole , PHP7,再到后来 laravel reactphp php-pm 等项目,php 社区有着源源不断的潜力,和一群热爱开发的人来给它续命。

糟心的设计

性能问题

PHP 设计之初是没有过多考虑性能问题,同步阻塞模型非常适合一般思维,多进程也一定解决了脚本语言长时间跑会不稳定的问题。但是这样做的后果就是多进程十分占用 CPU 资源,进程需要等数据库操作。而且 PHP 本身不常驻内存,像 laravel 这样重量级框架,每次请求需要从磁盘加载代码到内存,再执行,响应速度可想而知。 这就好比你开了一家饭馆,厨师炒菜慢,为了简化管理,你选择增加 100 个服务员,给顾客 1 对 1 服务。而异步非阻塞模型,一个服务员通过排号点餐叫号,就实现了你上万个服务员要做的事情。

环境安装问题

不得不吐槽,phpize + perl + composer 三连是 php 的一大败笔,当我们安装一个拓展时,最麻烦的情况是系统安装对应软件,phpize 编译,然后添加到 php.ini ,重启 php。而对于 golang/Rust/Node.js/Python,比如 node.js 你只需要 npm install 就能安装好所有,甚至包含了拓展和各种包,它会自动编译。所以,对于很多 php 开发者来说,拓展等环境要求耗费了很多无用功。 你可能会说,我用 phpstudy , laradock … 但是 Python golang node.js 这种,一个 apt install xxx ( yum install xxx )就解决了。 你可能会说,php 也可以用 apt 安装,但是对不起,你还需要安装它的七大姨八大姑,php-xm,php-json,php-xxxx 等十几个软件包。

生态方面

大司用的 php 并不是你用的 php

事实上,用 php 的大公司不算多,Facebook 总的来说,我更愿意称他在用 PHP 的风格生成 C++ 代码。微博更是有着无数 C 拓展,yaf 本身也是一个 C 拓展,其他一众公司基本上是 CI 这类框架为主,做视图层渲染,并且大都常驻内存。 真正能用到正宗 PHP 的基本上是没有。

软件生态

整体来说,php 生态还算不错,Laravel 生态也值得一提。 相对来说,一些新兴的 swoole 框架就没那么火了。PHP7 发布有许多年了,虽然支持类型定义,但是大部分 PHP 仓库都没有支持,相比之下,JavaScript 的生态对 Typescript 的支持要火热很多,大部分仓库都支持。

开发人员问题

PHP 目前的开发生态是一个恶性循环,入门级开发者偏多,导致 PHP 开发组不敢做太大的变动,基于 php-cli 的框架的寥寥无几,使用 PHP7 的开发者不算很多,那类型定义就更无从谈起了。对于新鲜事物的接受程度如此。

企业生态

不得不说的一个问题是,如果你学 PHP,而且对 C 和 swoole 不懂的话,那么你有很大的可能会入职外包公司。而 swoole 这些对于一般公司来说,招人成本太高,还不如直接 golang node.js 划算。

未来的前景

开发效率将不再是优势

laravel 的火热,决定了 PHP 未来势必走上复杂化这条路,越来越复杂,越来越适合写大项目,但本身性能和设计问题限制了它。而 spring boot 等一众其他语言框架,将会越来越简单,像 node.js 你只需要 npm install , npm start 就能启动项目,不需要管拓展,不需要配置 nginx 配置伪静态等等…

语言本身的限制太多

PHP 本身提供了极为匮乏的系统层函数,你无法简单的操作和管理内存,做定时任务,做队列,做开启一个 websocket 端口,甚至处理串口通信,等等,将来这些操作将极为普遍,而 php-fpm 本身搞这些很麻烦。你只能通过拓展,通过 C 和 C++。

应用场景

PHP 除了它所宣称的开发快,本身没有什么特色,不论是性能(相对于 JS 和 JAVA ),甚至没有 JIT,当然,更不适合做 IO 密集型应用,或者像 JS 在浏览器,JAVA 在企业级应用,.NET 在 windows,有着很强的门槛或者语言特色。 可预见的事实是,不管未来 微服务,区块链,AI,VR,AR 还是会出来 BR CR DR … 都不会有 PHP 一席之地。这是一个很残酷的事实,而 PHP 如果做出重大改变,就意味着失去原来的生态和开发者。

总结

我无心挑起语言之争,只是想告诉很多 PHPer  :

1. 你们可能在今后中遇到的很多问题,在其他语言中都十分好解决。比如操作 excel 文件 容易内存泄露,比如 做 websocket,比如做定时任务。

2. 语言是死的,人是活的,不管 C++ 也好,java 也罢,有很多值得 程序员 学习的东西,对个人是提高。

3. 对于 PHP 初学者来说,如果你十分讨厌外包的话,我建议你慎重考虑下,要不要继续学习 PHP。

4. 鸟哥和韩大 不推崇 laravel 的原因也是因为它本身太庞大,不适合 php-fpm。 并且从架构角度来说,CI 框架更好优化,把 IO 操作让给更适合的程序或者语言。

总的来说,PHP 现有的项目一大堆,做快速开发还是可以,并且还有很多历史遗留的项目,在很长时间内不会死,甚至活得很好,你也不用担心事业,但从长远来看它并没有前途。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Spark

Spark

Bill Chambers、Matei Zaharia / O′Reilly / 2017-10-31 / GBP 39.99

Learn how to use, deploy, and maintain Apache Spark with this comprehensive guide, written by the creators of the open-source cluster-computing framework. With an emphasis on improvements and new feat......一起来看看 《Spark》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具