PHP真正的异步即将到来?

介绍

多年来,PHP一直试图在长期运行的应用程序开发中占据一席之地,而并发代码执行在该领域尤为有用。已经出现了SwooleAMPHPReactPHP等可用于生产的解决方案。

然而,PHP仍然没有提供编写并发代码的全面实现。PHP 扩展即使能够实现,也无法支持非阻塞执行。Swoole被迫复制数千行代码以进行少量修改,而AMPHP开发人员必须在用户空间从头开始为、、和其他系统 构建驱动程序。MySQL``PostgreSQL``Redis

此RFC 的目标是建立用 PHP 编写并发代码的标准,以及允许使用 C、Rust、C++ 和其他语言在低级别扩展 PHP 的C API接口。这将使扩展能够支持非阻塞 I/O,而无需覆盖 PHP 函数或重复代码。

目标

True Async 项目追求以下目标和价值:

  • 从 PHP 开发人员的角度来看,此实现的主要价值在于他们不需要更改现有代码(或者如果需要更改,则更改应该是最少的)即可实现并发。

  • 最初编写并计划在 Fiber 之外运行的代码必须与 Fiber 内部完全相同地运行,无需修改。

  • PHP 开发人员不必考虑 Fibers 如何切换,也不需要管理它们的切换 — — 除非在特殊情况下他们有意识地选择干预这种逻辑。

  • 如果有现有的代码或熟悉的风格,例如 AMPHP 接口、Go 协程、Swoole API等,最好使用广泛开发人员最熟悉的。

  • 目标是在灵活性和简单性之间找到平衡。一方面,实现应该允许利用现有解决方案而无需外部库。另一方面,它应该避免不必要的复杂性。此实现中的许多设计选择都是出于希望让开发人员摆脱对与“外部库”兼容性的担忧,转而采用标准化方法。

  • True Async旨在通过提供 OOP 接口来抽象事件循环管理,使开发人员能够专注于对象生命周期,而不是资源管理或实现细节。内存管理和对象(例如ResumeNotifier和)的生命周期Callback是隐藏复杂性的关键工具,确保开发人员无需担心手动释放资源。

RFC

wiki.php.net/rfc/true_async

#Github

github.com/EdmondDantes/php-src/tr...

本作品采用《CC 协议》,转载必须注明作者和本文链接
CodingHePing
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10

虽然但是,看看能折腾起来什么风浪,期待上生产~ :yum:

3天前 评论
ononl 3天前

如果可以的话,那真的很牛逼了。

2天前 评论

跳过PHP9,直接上PHP10,丢弃历史包袱。

2天前 评论

PHP下一版本是8.5还是直接PHP9,网上也没搜到关于PHP9的消息,我估计还会有PHP8.6

1天前 评论

最好是swow合并到php-src

1天前 评论

PHP的异步感觉是没啥机会了,无非利用队列处理任务了

1天前 评论

真正重要的是非阻塞IO,只有有了它 ,异步或协程才有价值。

14小时前 评论
fatrbaby

这个提案不一定会通过。犹记得上次的 Fiber 提案,所有 swoole 的相关开发者都投了反对票。

10小时前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!