为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
大家好,我是码农先森。
谈到这个话题有些朋友心中不免会有疑惑,为什么是 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 程序员技术水平的分水岭?的更多相关文章
- 好程序员技术分享html5和JavaScript的区别
好程序员技术分享html5和JavaScript的区别,HTML5广义上讲是前端开发学科的代名词,包含HTML5.CSS3及JavaScript三个重要的部分,是运行在浏览器上应用的统称.如PC端网站 ...
- 好程序员技术教程分享JavaScript运动框架
好程序员技术教程分享JavaScript运动框架,有需要的朋友可以参考下. JavaScript的运动,即让某元素的某些属性由一个值变到另一个值的过程.如让div的width属性由200px变到400 ...
- 关于PHP程序员技术职业生涯规划
看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是学习各种PHP框架 ...
- 关于PHP程序员技术职业生涯规划[转]
看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是学习各种PHP框架 ...
- 关于PHP程序员技术职业生涯规划 转自 韩天锋
转自 http://rango.swoole.com/ 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些, ...
- 关于 PHP 程序员技术职业生涯规划
原文地址:http://rango.swoole.com/archives/570 看到很多 PHP 程序员职业规划的文章,都是直接上来就提 Linux.PHP.MySQL.Nginx.Redis.M ...
- 关于PHP程序员技术职业生涯规划 2017年3月5日韩 天峰
看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是学习各种PHP框架 ...
- PHP程序员技术职业生涯,你是如何规划的?
职业规划是这样的 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是 ...
- 优秀PHP程序员技术成长之路
按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...
- 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作
作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...
随机推荐
- 高通平台UEFI有关介绍
高通平台UEFI有关介绍 背景 我需要在高通平台上学习点亮LCD,目前通过同事在别的平台的配置代码,我已经将kernel部分的屏幕点亮了:剩余的工作量就在BP侧,也就是系统刚开机的那一段时间.在开发过 ...
- Nuxt3 的生命周期和钩子函数(六)
title: Nuxt3 的生命周期和钩子函数(六) date: 2024/6/30 updated: 2024/6/30 author: cmdragon excerpt: 摘要:本文深入解析了Nu ...
- scarpy基础
1. 创建项目 scrapy startproject 项目名称 2. 进入项目 cd 项目名称 3. 创建爬虫 scrapy genspider 名字 域名 4. 可能需要start_urls,修改 ...
- aach64架构 ubuntu20 桌面版 编译安装ffmpeg难点总结
[编译安装x264] 这一步基本上没有难点 git clone https://gitee.com/mirrors/x264.git ./configure --enable-shared --ena ...
- Ubuntu20.04中 ORBSLAM3的安装和测试
ORBSLAM3 安装以及测试教程(Ubuntu20.04) 1.前期准备工作 1.1安装相关依赖 sudo apt install git cmake gcc g++ mlocate 1.2下载OR ...
- 4. href 与 src?
href (Hypertext Reference)指定网络资源的位置,从而在当前元素或者当前文档和由当前属性定义的需要的锚点或资源之间定义一个链接或者关系.(目的不是为了引用资源,而是为了建立联系, ...
- SpringBoot 整合模板引擎 jetbrick-template
添加依赖 <dependency> <groupId>com.github.subchen</groupId> <artifactId>jetbrick ...
- 如何巧妙使用some函数来优化性能
什么时候会用的array.some? 需要从数组里快速找到符合条件的某一项 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测. 如果没有满足条件的元素,则返回false ...
- TP3.2与TP5.0的区别
1. 控制器输出return $this->fetch(); ----5$this->display(); ----3.2单字母函数去掉了 如:M() D() U() S() C() 3. ...
- oeasy教您玩转python - 012 - # 刷新时间
刷新时间 回忆上次内容 通过搜索 我们学会 import 导入 time 了 time 是一个 module import 他可以做和时间相关的事情 time.time() 得到当前时间戳 tim ...