大家好,我是码农先森。

谈到这个话题有些朋友心中不免会有疑惑,为什么是 Swoole 而不是其他呢?因为 Swoole 是基于 C/C++ 语言开发的高性能异步通信扩展,覆盖的特性足够的多,有利于 PHP 程序员接触更全面的技术知识点。大多数的朋友踏入到 PHP 的大门都是因其简单的语法及其弱类型的特性,还有各种集成环境安装包、简单易用的框架,随随便便就可以快速的搞出一个系统,这就让 PHP 在我们心中落下的「简单易用」的印象。

这种印象就注定了 PHP 程序员在编写代码的过程中,怎么简单怎么来,随便的很,不瞒你说我还见过用中文来命名变量的,这简直颠覆了我的编程认知,好歹你用拼音也比中文强吧。不过为了良好的编程习惯,最好还是用英文单词,毕竟我们也要与国际接触嘛,自己的代码放到 GitHub 上也要让国际友人看的懂吧。话又说回来,很多时候 PHP 靓仔们写的代码,过一段时间后自己都看不懂了,更别提其他人了。我经常听到有人到处吐槽,前人的代码写的和屎一样有又长又臭惨不忍睹,然后你还要憋着内伤在这坨屎上绣上一朵花,这场景不堪回首哈哈。

差点写跑偏了,还是揪回我们这次的主题吧。分水岭这个词大家都挺熟悉的,但是在这里就是把 PHP 程序员分成了两拨人了,一拨是一直在以 PHP-FPM 同步编程模式下编程的人,另一拨是以 Swoole 异步编程模式为代表的编程人。我们在 PHP-FPM 模式下编程时,集成环境一启动,就把 PHP-FPM 进程管理器、Nginx 服务、MySQL 服务全部都给搞起来了,不需要关心其中的细节,如果想要增加新项目就在 Nginx 的 vhost 目录,配置一个本地域名重启一下 Nginx 就完事了,要是遇到项目总是报错迟迟无法访问,就反复重启集成环境,运气好点的重启一两次就莫名的好了,倒霉的就凉凉了,又要操蛋的重装集成环境了,更有甚者直接重装操作系统,一顿操作猛如虎。还有在这种模式下,我们也不需要关心内存的使用情况,变量想定义多少搞多少,外部资源随意加载,从数据库查询数据全部都是 select * 的骚操作,管它用不用的上全部都搞出来再说,如果造成接口访问时间过长,就全部怼到 Redis 缓存中去,美其名曰这是高级的性能优化方案。要是懂得点异步技术的靓仔,还会在比如发送短信等的场景下,使用一下 Redis 消息队列,异步给用户发送消息而不阻塞同步接口,从而使系统的并发性能得到提高。

长期在 PHP-FPM 模式下编程的人,几乎不用懂操作系统、网络协议等基础知识,协议上不管怎么用都只有 HTTP 协议。然而在 Swoole 异步编程模式下,不懂这些基础知识那可就行不通了,除了 HTTP 协议还有 WebSocket 协议、MQTT 协议、TCP 协议、UDP 协议,甚至还可以自定义网络协议,如果你对基础协议知识不了解,那刚开始学习 Swoole 估计就要夭折。其次 Swoole 中的协程、通道、多进程编程,就涉及到了操作系统的多路复用、IO调度策略、进程间通信、进程管理等知识,这些统统都是计算机的底层知识,是在 PHP-FPM 编程模式下接触不到的。还有在 Swoole 中可以针对数据库连接打造数据库连接池,高效的复用数据库连接资源,不用每次都重新连接数据库,避免资源的浪费。正是这些基础知识把大多数 PHP 程序员困在了低水平重复的技术区域里,因此要学好 Swoole 需要先学习计算机底层知识,然后再反复的利用 Swoole 进行实践,两者相辅相成便可好好打磨自己的技术。

可以说在 PHP 领域 Swoole 就是这些基础知识的具体体现,深入理解了 Swoole 并且能应用好,就能让自己的技术水平上一个新的台阶,超越大多数的 PHP 程序员。同时掌握了这些基础知识横向学习其他的语言也会易如反掌,原因是大多数语言的本质都是相通的,了解了其内在本质基本上就能做到一通百通。在这个持续内卷的时代,是时候让自己炼就一些不可或缺的内功了,不要让自己每天都疲于奔命在学习层出不穷新框架的路上,而是要掌握事物的根本规律以不变应万变,打造自己的知识壁垒墙,争取在内卷这场风暴中苟活下来。本次分享的内容到这里结束了,希望对大家能有所启发。

感谢阅读,个人观点仅供参考,欢迎在评论区发表不同观点。


欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

为什么说 Swoole 是 PHP 程序员技术水平的分水岭?的更多相关文章

  1. 好程序员技术分享html5和JavaScript的区别

    好程序员技术分享html5和JavaScript的区别,HTML5广义上讲是前端开发学科的代名词,包含HTML5.CSS3及JavaScript三个重要的部分,是运行在浏览器上应用的统称.如PC端网站 ...

  2. 好程序员技术教程分享JavaScript运动框架

    好程序员技术教程分享JavaScript运动框架,有需要的朋友可以参考下. JavaScript的运动,即让某元素的某些属性由一个值变到另一个值的过程.如让div的width属性由200px变到400 ...

  3. 关于PHP程序员技术职业生涯规划

    看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是学习各种PHP框架 ...

  4. 关于PHP程序员技术职业生涯规划[转]

    看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是学习各种PHP框架 ...

  5. 关于PHP程序员技术职业生涯规划 转自 韩天锋

    转自 http://rango.swoole.com/ 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些, ...

  6. 关于 PHP 程序员技术职业生涯规划

    原文地址:http://rango.swoole.com/archives/570 看到很多 PHP 程序员职业规划的文章,都是直接上来就提 Linux.PHP.MySQL.Nginx.Redis.M ...

  7. 关于PHP程序员技术职业生涯规划 2017年3月5日韩 天峰

    看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是学习各种PHP框架 ...

  8. PHP程序员技术职业生涯,你是如何规划的?

    职业规划是这样的 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是 ...

  9. 优秀PHP程序员技术成长之路

    按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...

  10. 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作

    作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...

随机推荐

  1. 通过 hexo 生成静态博客

    通过 hexo 生成静态博客 背景 在对比了很多博客网站以后,我决定开始慢慢迁移我的文章,以后有时间的话还会搭建自己的网站,目前主流的静态博客生成器有三个: jekyll, hexo, hugo. 静 ...

  2. R语言遍历文件夹求取其中所有栅格文件的平均值

      本文介绍基于R语言中的raster包,遍历读取多个文件夹下的多张栅格遥感影像,分别批量对每一个文件夹中的多个栅格图像计算平均值,并将所得各个结果栅格分别加以保存的方法.   其中,本文是用R语言来 ...

  3. SpringBoot 2.5.5整合SpringSecurity+JWT

    目录结构 添加依赖 <!-- SpringSecurity --> <dependency> <groupId>org.springframework.boot&l ...

  4. 浅谈地址,section,vstart

    地址:地址只是数字,描述各种符号在源程序中的位置,它是源代码文件中各符号偏移文件开头的距离.由于指令和变量所占内存大小不同,故他们的偏移量参差不齐.由编译器给各符号编址,编译器给程序中各符号(变量名和 ...

  5. 如何在有数BI中实现千人千面的数据推送?

    问题背景 前几天有个项目管理的同学来咨询我一个问题,该项目有一个项目进度信息表,表中有项目名称,项目阶段,项目状态,项目任务等字段,在实际工作中想要实现如下场景: 当项目名称为A时,且项目阶段是需求阶 ...

  6. SQL SERVER根据数据表的某个栏位查询另一个数据表符合条件的某个栏位的值,如果多行则合并为一张字符串形式

    SQL SERVER根据数据表的某个栏位查询另一个数据表符合条件的某个栏位的值,如果多行则合并为一张字符串形式 要在 SQL Server 中根据一个数据表的某个列查询另一个数据表符合条件的某个列的值 ...

  7. microsoft office object版本对应offices版本

    1997年 Excel 97 Microsoft Excel 8.0 1999年 Excel 2000 Microsoft Excel 9.0 2001年 Excel XP Microsoft Exc ...

  8. [oeasy]python0128_unicode_字符集_character_set_八卦_星座

    unicode 回忆上次内容 中国的简体和繁体汉字 字符数量都超级大 彼此还认对方为乱码   如果有一种编码所有的字符都能编进去就好了 中日韩(CJK) 欧洲拼音 梵文 阿拉伯文 卢恩字符 等等等都包 ...

  9. lvs的nat和dr模式混合用

    机器部署信息 lvs : 10.0.0.200  vip 10.0.0.19 外网IP , 172.168.1.19 内网IP dr rs: 10.0.0.200 vip 10.0.0.18 rip ...

  10. C# 泛型SQLHelper<T>类

    示例[1] 1.创建SQLHelper类 using System.Collections.Generic; using System.Configuration; using System.Data ...