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

推荐订阅源

美团技术团队
人人都是产品经理
人人都是产品经理
月光博客
月光博客
V
V2EX
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
宝玉的分享
宝玉的分享
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
博客园 - 聂微东
博客园 - 司徒正美
博客园 - 【当耐特】
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志

博客园 - zh7314

Go 1.23 → 1.26 升级检查文档 Pimcore 版本功能对比表(Community / Professional / Enterprise) typephp的编译核心phpx原理解析 typephp的编译原理 golang多版本控制工具支持Linux/macOS/Windows dbx低性能消耗的支持window/mac/docker的数据库客户端 关于headless和低代码平台的一些思考 docker日志监控dozzle,高性能,性能消耗小 pimcore 12版本的命令 阿里云 nas服务挂了导致docker挂载目录不存,docker无法重启和停止容器 symfony+swoole性能测试 关于小米手机使用 microsoft authenticator 无法扫码成功的解决方案 fastapi的构建cms,推荐fastapi集成框架 s3rius/FastAPI-template python 现代化包管理工具uv安装和使用 博文阅读密码验证 - 博客园 laravel在cli模式下输出格式漂亮一些 laravel计划任务和异步队列任务,拆分成不同队列,减少计划任务系统压力 debug redis里面的lua脚本 laravel chunkById导出数据乱序问题 关于his esb企业服务总线系统设计 多渠道订单,对应渠道公司的提现主体,如何设计系统 laravel 主表和从表一对一,从表是要多个选取最新的一条,性能优化 sourcetree无法获取远程所有的tag 支付宝沙盒模式商家转账经常出现 响应异常: 解包错误 laravel 使用异步队列,context带的上下文造成反序列化出问题 hyperf 的默认创建项目部署k8s docker缺失文件 在laravel使用注解自动注册 hyperf 查看所有路由的命令 线上就医全流程医药机构接入文档接口代码-医保就医接口php-demo版本 windows lm studio 0.3.8无法下载模型,更换镜像
PHP 真正异步编程即将到来 首个 alpha 版本已经发布 (转)
zh7314 · 2025-07-24 · via 博客园 - zh7314

2025年7月24日09:55:22

最新进展

TrueAsync RFC 发布后,PHP 异步编程领域迎来了不少变化。现在扩展的首个 alpha 版本已经发布,官方的核心变更 RFC 也正式公布,是时候看看这个项目的最新动态了。

为什么 RFC 还没投票?

前车之鉴
开发团队翻遍了其他编程语言的文档、论坛讨论和工作组记录,发现了一个有趣的现象:到目前为止,还没有哪门语言能在第一次尝试时就搞定异步 API 设计。

这不仅仅是因为技术复杂,更关键的是那些看起来很美好的方案,在实际使用中往往会踩坑。

不能急于求成
就算有一堆顶级专家,第一次设计也很可能有问题。这就像《人月神话》里说的"做一个扔一个",所以开发团队觉得匆忙推 RFC 肯定不是好主意。

新策略:先试再说

实验驱动开发
PHP 社区和核心团队想出了一个更靠谱的办法:先发布实验版本让大家试用,收集反馈后再敲定 RFC。

具体来说就是:

  1. 让开发者先在实验环境下体验 PHP 异步功能
  2. 等收集到足够的使用经验后,再最终确定 RFC
    代码库分离
    为了支持这个策略,开发工作拆分成了两个独立的仓库( https://github.com/true-async ):

• PHP 核心引擎 API
• 具体实现异步功能的扩展
这样做的好处是,PHP 核心可以独立演进,不用等异步功能的具体实现完全确定。即使 RFC 还在讨论,开发也能继续推进。

RFC 现状和计划

专门的引擎 RFC
现在有个专门针对核心引擎改动的 RFC:
https://wiki.php.net/rfc/true_async_engine_api

如果这个 RFC 通过了,PHP 8.5 就会内置现在 TrueAsync 扩展里的所有核心功能。

现在就能试
不想等正式版本的话,现在就可以体验:

• Docker 方式:https://github.com/true-async/php-async/blob/main/Dockerfile
• Windows 版本(快发布了)

TrueAsync 扩展技术细节

技术栈
TrueAsync 扩展基于这些技术:

• LibUV 1.44+:负责高性能事件循环
• PHP Fibers:用 C 代码实现协程
核心特性
对现有代码友好
通过 Fibers,TrueAsync 做到了对现有代码零破坏。你可以在任何地方调用 spawn,甚至在 register_shutdown_function() 里(虽然不太推荐),普通函数该怎么工作还怎么工作。

最重要的是:没有函数着色问题。

调度算法优化
新的调度算法有这些改进:

• 上下文切换减少一半
• 协程可以直接跳转,哪怕在 C 代码深处
• 执行流程控制更灵活,想什么时候中断恢复都行
函数自动适配
TrueAsync 对现有 PHP 函数做了智能适配。比如调用 sleep() 时,系统会自动切换协程,这个过程对开发者透明。

当然,如果你想手动控制,可以用 Async\suspend() 函数。

功能现状

已支持的函数
目前已经适配了很多 PHP 内置函数,完整列表在这里:
https://github.com/true-async/php-async?tab=readme-ov-file#adapted-php-functions

连 ob_start() 这种复杂函数都支持了,能正确处理协程切换,安全地并发处理不同函数的输出。

实用性如何
现有功能已经够用来构建实际的异步应用了,给 PHP 开发者提供了一个尝试异步编程的机会。

这个项目的意义

TrueAsync 算是 PHP 异步编程的一个重要转折点。通过"先试后定"的策略,实现了:

• 降低风险:用实际使用来验证设计是否合理
• 社区参与:让开发者早期就能参与测试和反馈
• 持续改进:根据实际需求优化 API 设计
• 平稳过渡:确保最终方案稳定可用
虽然这样做会拖长开发周期,但能为 PHP 生态提供一个更成熟可靠的异步编程方案。

总结

TrueAsync 项目展示了现代软件开发中"实验驱动设计"的价值。让开发者提前体验和测试新功能,PHP 社区正在为异步编程的未来打好基础。

对 PHP 异步编程感兴趣的同学,现在就可以去试试了。

原文:
https://mp.weixin.qq.com/s/fxErpwCU4WPHso_z34jt0Q