惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
D
Docker
GbyAI
GbyAI
B
Blog RSS Feed
博客园 - 司徒正美
博客园 - Franky
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
AI
AI
O
OpenAI News
Attack and Defense Labs
Attack and Defense Labs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
S
Secure Thoughts
博客园 - 聂微东
L
LINUX DO - 最新话题
U
Unit 42
SecWiki News
SecWiki News
A
Arctic Wolf
Schneier on Security
Schneier on Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Visual Studio Blog
量子位
The Cloudflare Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
G
Google Developers Blog
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
博客园 - 【当耐特】
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
Last Week in AI
Last Week in AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Microsoft Security Blog
Microsoft Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
Latest news
Latest news

文章列表 - 她和她的猫

使用小鹤双拼一个月 折腾 Hugo PaperMod 主题 去长鹿旅游休博园 1Password 自动化登录堡垒机 深入 Hyperf:Inject 注解是如何工作的? 译|理解容器镜像层 使用 Rust 实现高性能预写日志(Write Ahead Log) 译|使用 Linux 命名空间隔离系统 深入 Hyperf:HTTP 服务是如何处理请求的? Linux 文件权限学习笔记 译|了解 Bitcask:基于日志结构的 KV 存储引擎 还原 SM2 压缩公钥的几种方法 深入 Hyperf:HTTP 服务启动时发生了什么? 一次 Hyperf 注解失效问题分析 将博客迁移到又拍云 译|PHP 7 新的 Hashtable 实现 排查 ES 查询问题:深入了解 json_encode() 函数 浅析 Redlock 分布式锁实现原理 Yar 源码阅读笔记:RPC 服务端 Yar 源码阅读笔记:客户端的并行调用 Yar 源码阅读笔记:客户端的同步调用 Yar 源码阅读笔记:数据传输模块 Yar 源码阅读笔记:消息编码模块 Yar 源码阅读笔记:RPC 通信协议 Yar 源码阅读笔记:开篇 PHP 8 新特性介绍 基于 OpenSSL 实现国密 SM4 加解密 PHP 源码阅读笔记:编译与调试 PHP 什么是惊群问题 大端模式和小端模式 基于 GitHub Actions 定时推送网址到百度站长平台 聊聊五种 I/O 模型 Workerman 源码分析:文件上传 浅入浅出 HTTP 协议 PHP 网络编程:构建 MySQL 蜜罐获取攻击者微信 ID 使用 Workerman 接入 Bilibili 直播弹幕协议 使用 GitHub Actions 自动部署 Hexo 什么是二进制安全 优化 Workerman 检查主进程是否存活的逻辑 基于 Redis 实现分布式锁 《PHP 实现 Base64 编码/解码》笔记 PHP 多进程下载必应壁纸 基于 Redis 实现延迟队列 【转载】PHP 实现 Base64 编码/解码 使用 MySQL FIELD() 函数自定义排序规则 Laravel 的 Facades 实现原理 C语言单链表实现约瑟夫环 数据结构学习笔记:顺序栈和链栈(C语言) 使用 QueryList + Redis 下载壁纸 在 Laravel 登录/注册中使用 mews/captcha 扩展包 使用 mews/captcha 扩展包为 Laravel 应用添加图片验证码 给 YOURLS 短网址系统编写插件《批量生成短网址》 给 YOURLS 短网址系统编写插件《Hello World!》 PHP 7.1 使用 json_encode 函数造成浮点类型数据出现精度问题 Laravel 授权策略(Policy)的基本使用 Ubuntu 系统下 WiFi 频繁掉线解决方法 Laravel 应用部署到 Nginx 服务器上的第一个坑 Ubuntu 16.04 LST 安装 Redis 和 Composer PHP 采集逐浪小说章节列表 Nginx 环境 SSL 强制 HTTP 301 跳转到 HTTPS 【工作&生活】第一周 ServiceStack.Redis 与多线程 Count the number of Duplicates C# Base64 加密及解密 ASP.NET MVC 使用动态类型传递数据 Django 使用 order_by() 对数据进行排序操作 ASP.NET + jQuery + AJAX 实现用户登录 ASP.NET 从客户端中检测到有潜在危险的 Request.Form 值 ASP.NET 使用 FormData 实现 AJAX 上传图片 Python 使用 BeautifulSoup 抓取网页 贪心算法之字符串的完美度 一言不和就造轮子之 CookieHelper ASP.NET 上传图片 DBHelper 类 C# 捕获屏幕源码 用 JavaScript 做一些有趣的事情 第一篇文章 好久不见。 如何防止非法调用 PHP 文件 清明小记。 PHP 生成随机字符串 Z-Blog PHP 程序做 301 跳转 PHP 处理数组常用的几个函数 Sublime Text 3 快捷键总结 PHP 使用 file_get_contents() 函数实现采集网页 使用 C# 编写学生信息管理系统 终于到了。 zblog报错: magic_quotes_gpc 和 safe_mode 世事无常。 如何使用 PHP 上传文件 安卓手机编写和运行 PHP 程序的软件 使用 AJAX 刷新、验证 PHP 图片验证码 PHP 生成图片验证码 PHP 之 session 的使用方法 PHP 之 cookie 的使用方法 PHP 实现分页原理详解 Thinkphp 框架中系统常量在 Js 文件中不解析的解决方法
【转载】PHP 程序员进阶之路
她和她的猫 · 2021-03-23 · via 文章列表 - 她和她的猫

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

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

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

你可不可以用 Swoole 或 Workerman 去逐渐实现并代替贵司现有 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…