最好的语言 PHP

从 PHP5 入了这个深坑以来已经有十多年,记录一些感觉有点东西的相关

写文的 Dec 2024,PHP 在 TIOBE 上的排行已经下降到 12 位,Dec 2023 时为 7

同时,Rust 的排行为 14 位,Dec 2023 时为 18

不过个人觉得 PHP 在 PHP8 这一代的进步是显著的,即有 JIT,也有注解,Match 表达式等新特性的加入

PHP 依旧充满活力!

Laravel

Laravel

Laravel 是优雅的 PHP Web 开发框架,优雅!太优雅了!

生态丰富,历史悠久,大多数情况下用它总没错!

YAF, Phalcon

早期吐槽 PHP 的主要问题之一就是性能,于是催生了以 C 语言写扩展的方法去做框架

Yet Another Framework

YAF 的取名还是 Old fashioned 的 Yet Another XXX

Phalcon

比 YAF 提供了更多的功能

还维护了一个 Zephir language,用一个类似 PHP 语言的方式去写 PHP 扩展

Phalcon 的后期也是 Zephir/C 都有

Swoole 与 Open Swoole, Swow

Swoole

Swoole 也是 C 扩展,基于异步事件驱动,为 PHP 引入了协程的概念,类似 Golang 的 goroutine

不过 Swoole 的团队真是一言难尽,搞出了下面这个操作后,逐步分离出来了 Open Swoole

Swoole’s admin interface hot-loads code from a third-party server ? · Issue #4434 · swoole/swoole-src
https://github.com/swoole/swoole-src/issues/4434

Open Swoole

Swow

致力于使用最小 C 核心及多数 PHP 代码以支持 PHP 高性能网络编程

类似 Swoole

Hyperf, LaravelS

Hyperf

高性能、高灵活性的渐进式 PHP 协程框架,内置协程服务器及大量常用的组件

可基于 Swoole 或 Swow, 常驻内存,参考了 Laravel 的优雅

LaravelS

把 Laravel 架在 Swoole 上,以常驻内存的方式来加速其运行

workerman, webman

workerman

纯 PHP 开发的开源高性能的 PHP 应用容器

靠多 Worker 进程,Epoll + 非阻塞 I/O

webman 是基于 workerman 的 HTTP 服务框架

追求性能的话,现在首推这两

AMPHP

Fibers

PHP 在 8.1 加入了 Fibers,中文译为 纤程

纤,比线更细!

Fiber 主要用于为异步 I/O 实现协程,提供了独立栈分配、函数调用的暂停和恢复功能

就出自 AMPHP ext-fiber

投票结果以 50 对 14 通过

RFC

可以看到,PHP 创始人 Rasmus Lerdorf 和 Swoole 创始人韩天峰@matyhtf 均投了反对票

ReactPHP

ReactPHP

相较于 Swoole, Swow 等以 C 扩展的形式实现非阻塞 I/O,ReactPHP 是纯 PHP 的

  • Supports latest version of PHP 8+ and PHP 7+ for best performance and support.
  • Still supports legacy PHP 5.3+ and HHVM for maximum compatibility.

从它对 PHP 版本的支持中可以看到,也是老牌且相当不容易了

fiber 之后,ReactPHP 也加入了对其的支持,提供了一个 Async Utilities

async

PSL, Revolt

PHP Standard Library

Revolt

都为了非阻塞

box

box

把项目方便的打包成 PHAR

static-php-cli

SPC

构建独立的 PHP 二进制文件包括 cli, fpm, micro 三种模式

其中 micro 又可与单文件或 phar 结合,把 PHP 项目也打包为一个文件

Cool!

ext-php-rs

ext-php-rs

Rust Crate

用 Rust 写 PHP 扩展的库

甚至还提供 Async futures,但依赖 PHP fibers, php-tokio 和 PHP Revolt event loop

与 AMPHP, PSL, ReactPHP 或其它 Base on Revolt 的异步 PHP 库兼容

Cool!