原文:没有Nginx,你还能做什么?

PHP程序员的未来不是Java,Java拯救不了你。

已经1368年了,你扪胸自问,没有了Nginx的你,还能用PHP做什么。有一些高端的刁民会愤怒地说:“有swoole啊,有workerman啊!”,那么,有两个问题需要回答:

  • 你可不可以用sw或wm去逐渐实现并代替贵司现有PHP业务
  • 如果可以更换,除了你之外的其他同事们需要花费多少精力和时间

认真思考一下,仿佛感觉fpm就是php的业界毒瘤,不过老话说得好:能用就行…

不说静态语言,就说脚本语言而言,拿同行Python相比,你看人家Python,多么的均衡多么的全面,进程、线程、IO、Stream什么都没有拉下,一句话总结一下就是:既没有明显缺点,也没有明显优点,什么都能做。

你们知道么,能做到“既没有明显缺点,也没有明显优点,什么都能做”是多么的困难的一件事。

搞Python的同行们,除了能用Flask码Web,也能用Tornado搞异步非阻塞,能够运用线程池来做一些task;相比之下,作为同行的我们,似乎除了会在fpm或者apache_mod下搞一搞增删改查,似乎别的什么也做不了了,而且在接收新概念的时候,不太容易能接纳(后半句科班生以及优秀的非科班生忽略)。

除了Python外,大举入侵的Nodejs,能够很快让原来的娱乐圈的同行们很快融入切换到后端圈来,而且天生的异步非阻塞优势能够让他们写出QPS很高的Web程序。

Java,恕我直言,实际上PHP压根就不具备和Java对比的资格,别玻璃,事实如此,PHP被Java按在地上摩擦,那为啥文章开头你为啥说…我就是讨厌Java,个人偏见,仅此而已…

回应文章标题的话,Nodejs压根不需要Nginx,而Python用Tornado也是完全O jb K!当然了,PHP也能这么做,然后请回到文章开头第五行和第六行。归根结底,都是生态问题导致的。我不能从从业者质量问题上去理解这个问题…

PHP7似乎是PHP的奋力一击,性能猛地提升了一倍。然而,以我目前的认知水准,似乎总有强弩之末的赶脚。PHP的强项在Web,这门为Web而生的语言似乎还没有做好拥抱新时代的准备。

都1368年了,PHPer该如何提升自己?

  • 第一:还请继续深入研究PHP,打好PHP自身的基础,PHP的SPL库系列请仔细研究;PHP的socket模块以及pcntl模块,一定要研究尝试一下,请尝试学习使用PHP cli模式去运行PHP,上面这几点都是针对纯语言方向的研究;然后,最好尝试从工程代码组织角度去理解和学习设计模式和面向对象OOP,因为干巴巴地背诵设计模式,压根理解不了。如果可以,请尝试使用swoole或者workerman,推荐swoole,因为折腾swoole的过程会让你知道很多你需要补充的知识点

  • 第二:请接纳一门新的语言。首先推荐Golang,然后是Java,其次是Nodejs,终极杀招是C/C++。不太严格地讲,编程语言分静态编译或动态脚本语言,所以我不建议再搞新的脚本语言,比如Nodejs或Python甚至Ruby之类,你既然要花费时间和精力去补充新鲜血液,不妨尝试Golang。作为终极大杀器,如果你对自己足够狠,请深入研究C语言

  • 第三:请深入研究数据结构,了解了数据结构,很多东西就会理解了。然后基础算法,注意是基础算法,那些脑筋急转弯就省省得了。现有的这些基础算法已经是人类智慧的结晶了,能够熟练运用就非常不错了,推荐书籍:《大话数据结构》

上面三点如果研究了一段时间,已经有所积累了的话,准备下面的几个步骤:

  • 第四:深入研究一下MySQL和Redis。MySQL请购买《MySQL技术内幕:innodb存储引擎》和《高性能MySQL》两本书,Redis请购买《Redis设计与实现》。有了前面三点累计的成果,你会对以前面试前需要背诵的什么Mysql索引优化原则了然于胸,不用背诵了,因为他就是应该是那样的。

实际上,你第四步进行一个周期后,还是会有一些疑惑,确实理解不了,只能靠背诵和记忆,无妨。

  • 第五:终究绕不开的还是学习CLang和使用Linux操作系统。你需要准备两本书,按照学习先后顺序,分别是《C Primer Plus》和《Unix环境高级编程》。这地方有一个巨大的错觉,就是读完一遍《C Primer Plus》后就觉得自己会CLang了,有这种优越感的,请你尝试用CLang做个什么东西出来?然后你发现似乎真的什么也做不了,这会儿就可以步入到《Unix环境高级编程》的节奏了,在这里你才能逐渐发现CLang可以做些什么。一个流程完毕后,你再回到第四步,试试?第一次看第四步的时候遗留的问题是不是可以搞定一部分了?

再往下,就没有了,到了这一步,实际上大多数人自己已经方向是什么了。说到底都是基础,一切基于基础之上的上层应用都是海市蜃楼,犹如过眼云烟,你今天背过这个,明天就会冒出来新的。今天他叫Node,明天他就叫Deno,然而不变的永远是基于事件监听的异步非阻塞IO…

【转载】PHP 程序员进阶之路的更多相关文章

  1. C++高级程序员进阶之路

    一.自学成为高级程序员推荐看的书: 1.c语言基础 <c primer Plus>.<c和指针>.<C专家编程> 2.C++语言基础 <C++ Primer& ...

  2. PHP程序员进阶学习书籍参考指南

    PHP程序员进阶学习书籍参考指南 @heiyeluren lastmodify: 2016/2/18     [初阶](基础知识及入门)   01. <PHP与MySQL程序设计(第4版)> ...

  3. 谈谈Java程序员进阶的那些知识和方向

    谈谈Java程序员进阶的那些知识和方向 记得前段时间看过一篇文章谈到一种程序员叫野生程序员,战斗力极强,可以搞定一切问题,但是通常看问题抓不到本质,或者说是google/baidu/stackover ...

  4. windows程序员进阶系列:《软件调试》之堆 (一)

    windows程序员进阶系列:<软件调试>之堆 (一) 堆是软件在运行时动态申请内存空间的主要途径.从堆上申请来的空间需要程序员自己申请和释放,且申请和释放操作必须绝对匹配.忘记释放或者多 ...

  5. 《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  6. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  7. 【转载】分享下多年积累的对JAVA程序员成长之路的总结

    注:该文是从百度贴吧转载过来,之前看到觉得写得还不错,对Java开发学习者来说很有意义的,可以看看. 我也搞了几年JAVA了,由于一向懒惰,没有成为大牛,只是一普通程序猿,不爱玩社交网站,不爱玩微博, ...

  8. Java程序员修炼之路

    作者简介:王成委,CSDN知识库特邀编辑,Java高级工程师,熟悉Java编程语言和Oracle数据库.专注于高并发架构设计和大数据存储方向的研究. 我们为什么选择Java 大多数人选择Java可能只 ...

  9. Java程序员进阶架构师推荐阅读书籍

    [IT168 技术]作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些 ...

随机推荐

  1. 『居善地』接口测试 — 11、接口签名sign原理

    目录 1.什么是加密以及解密? 2.加密方式的分类 (1)对称加密 (2)非对称加密 (3)总结: 3.接口签名sign原理 (1)什么是接口签名? (2)为什么需要做接口签名 (3)接口签名的实践方 ...

  2. 关于使用JS去除URL中的指定参数问题,js 对url进行某个参数的删除,并返回url

    在网页上找了半天,发现现在的资源实在是少的可怜,而前端尤甚.所以没办法,于是自己花了一些时间写了一个: 1 /** 2 * 删除URL中的指定参数 3 * @param {*} url 4 * @pa ...

  3. 别再说Java对象都是在堆内存上分配空间的了!

    Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解.可以说,关于JVM的相关知识,基本是每个Java开发者 ...

  4. JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇

    JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...

  5. Vue(4)Vue指令的学习1

    前言 Vue官网一共有提供了14个指令,分别如下 v-text v-html v-show v-if ☆☆☆ v-else ☆☆☆ v-else-if ☆☆☆ v-for ☆☆☆ v-on ☆☆☆ v ...

  6. kubelet分析-csi driver注册源码分析

    kubelet注册csi driver分析 kubelet注册csi driver的相关功能代码与kubelet的pluginManager有关,所以接下来对pluginManager进行分析.分析将 ...

  7. 如何优雅地实现浏览器兼容与CSS规则回退

    读完了<Visual Studio Code权威指南>,前端方面书籍不能停,于是捡起「CSS一姐」 Lea Verou 的<CSS魔法>. 我们没法控制用户使用新版本还是老版本 ...

  8. 35、cobbler自动化安装操作系统

    35.1.cobbler介绍: Cobbler是独立的,不需要先安装Kickstart然后再安装Cobbler: Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速 ...

  9. 基于Yarp实现内网http穿透

    Yarp介绍 YARP是微软开源的用来代理服务器的反向代理组件,可实现的功能类似于nginx. 基于YARP,开发者可以非常快速的开发一个性能不错的小nginx,用于代理http(s)请求到上游的ht ...

  10. 基于uni-app全端弹框组件uaPopup「兼容h5+小程序+app端|nvue」

    uniapp兼容多端自定义模态弹框组件UAPopup ua-popup 一款轻量级的uniapp自定义弹窗组件.汇集了android.ios和微信弹窗效果(msg消息.alert提示框.dialog对 ...