在 Ubuntu 上“PHP 多线程”通常不是指 PHP 本身像 Java 那样直接开线程,而是有几种可行方案。下面按推荐程度和使用场景说明。
适合:CLI 脚本、定时任务、爬虫、队列处理
sudo apt install php-cli
示例(fork 多进程):
$pid = pcntl_fork();
if ($pid == -1) {
die('fork failed');
} elseif ($pid) {
// 父进程
} else {
// 子进程
echo "child\n";
exit;
}
⚠️ 注意:
❌ 不推荐
适合:高并发、Web、API、长连接
sudo apt install php-dev
pecl install swoole
echo "extension=swoole" | sudo tee /etc/php/8.x/cli/conf.d/20-swoole.ini
示例(协程并发):
Swoole\Coroutine\run(function () {
go(function () {
echo "task 1\n";
});
go(function () {
echo "task 2\n";
});
});
✅ 优点:
适合:HTTP 客户端、IO 密集型
composer require react/event-loop
如果你只是想 同时处理多个请求:
pm = dynamic
pm.max_children = 50
| 需求 | 推荐方案 |
|---|---|
| CLI 并发 | pcntl / Swoole |
| Web 高并发 | PHP-FPM + Swoole |
| 并行计算 | 多进程 |
| 真线程 | ❌ 不推荐 |
如果你能说明:
我可以给你 具体配置示例。