PHP TrueAsync 正式支持 FPM 模式运行

让 PHP 异步编程更简单
TrueAsync 是一个创新的 PHP 异步扩展,它允许开发者使用协程(coroutines)轻松实现异步编程。这个 GitHub 仓库提供了一个完整的 Docker 配置方案,将 TrueAsync PHP 与 PHP-FPM 和 Nginx 完美结合,让你快速搭建一个支持异步处理的 Web 环境。
这个项目不是简单的 PHP 镜像打包,而是针对异步场景优化的全栈解决方案。它使用 Docker Compose 一键部署,内置了 Nginx 作为反向代理、PHP-FPM 作为进程管理器,还预置了多个测试示例。
核心亮点
TrueAsync 的魅力在于它将 PHP 的阻塞式 I/O 转化为非阻塞式,让网络请求、文件操作甚至 Web 抓取都能并发执行。原本一个 HTTP 请求需要等待数据库查询完成,现在可以通过 spawn 和 await 轻松并行多个任务,性能提升数倍!
- Docker 一体化:无需手动安装扩展,镜像已内置 TrueAsync 和必要依赖。
- Nginx 优化:默认超时设置为 300 秒,完美适应异步长任务。
- Supervisor 管理:自动监控进程,确保服务稳定运行。
- 内置测试:从 phpinfo 到 Web 抓取 demo,一应俱全,便于验证。
相比传统 LAMP 栈,这个配置更轻量、更现代,尤其适合微服务或 API 后端开发。
快速上手
仓库提供了两种启动方式,推荐 Docker Compose ——它简单且可扩展。假设你已在本地安装 Docker 和 Docker Compose:
- 克隆仓库并准备应用目录:
git clone https://github.com/true-async/fpm.git cd fpm mkdir -p app echo '<?php phpinfo(); ?>' > app/index.php # 创建一个简单测试页
- 启动服务:
docker-compose up --build
构建过程只需几分钟,完成后访问 http://localhost:8080,你会看到一个欢迎页,展示 TrueAsync 的基本信息。如果用纯 Docker:
docker build -t trueasync-fpm . docker run -d -p 8080:80 --name trueasync-fpm trueasync-fpm
浏览器打开 http://localhost:8080,一切就绪!
测试
仓库预置了几个 demo 文件,值得一试:
/phpinfo.php:查看 PHP 配置和 TrueAsync 扩展(用curl http://localhost:8080/phpinfo.php命令行测试)。/async-test.php:基础异步任务验证。/async-parallel.php:并行执行多个任务,观察速度提升。/async-sleep.php:模拟延迟,演示delay函数。/async-scraper.php:实际 Web 抓取示例,异步拉取多个页面。
这些测试不只验证功能,还能激发你的灵感。比如,在生产中,你可以用它构建一个高吞吐量的爬虫服务。
第一个 TrueAsync 代码示例
在 app/my-async-test.php 中写入:
<?php
usefunctionAsync\spawn;
usefunctionAsync\await;
usefunctionAsync\awaitAll;
usefunctionAsync\delay;
echo"Starting async operations...\n";
// Example 1: Simple spawn and await
$coroutine = spawn(function() {
delay(1000); // 1 second
return"Task completed!";
});
$result = await($coroutine);
echo"$result\n";
// Example 2: Parallel execution
$coroutines = [
spawn(fn() => delay(1000) ?? "Task 1"),
spawn(fn() => delay(1000) ?? "Task 2"),
spawn(fn() => delay(1000) ?? "Task 3"),
];
[$results, $exceptions] = awaitAll($coroutines);
print_r($results);
echo"All done!\n";
运行 http://localhost:8080/my-async-test.php,你会看到任务几乎同时完成,而不是串行等待。这样的模式在电商推荐系统或实时数据聚合中超级实用!
配置
PHP-FPM 配置
主进程参数 www.conf
pm = dynamic pm.max_children = 50 # Maximum processes pm.start_servers = 5 # Starting number pm.min_spare_servers = 5 # Minimum idle processes pm.max_spare_servers = 35 # Maximum idle processes
PHP 配置
在 php.ini 中添加您的自定义设置:
max_execution_time = 300 memory_limit = 256M upload_max_filesize = 50M post_max_size = 50M
日志
查看日志
# All logs docker-compose logs -f # PHP-FPM only docker exec -it trueasync-fpm tail -f /var/log/php-fpm/error.log # Nginx only docker exec -it trueasync-fpm tail -f /var/log/nginx/error.log
以上关于PHP TrueAsync 正式支持 FPM 模式运行的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » PHP TrueAsync 正式支持 FPM 模式运行

微信
支付宝