温馨提示×

Ubuntu怎样配置PHP多线程

小樊
32
2026-09-04 13:33:34
栏目: 编程语言

Ubuntu 上“PHP 多线程”通常不是指 PHP 本身像 Java 那样直接开线程,而是有几种可行方案。下面按推荐程度使用场景说明。


一、最推荐:用多进程 / 异步(而不是线程)

1. PHP 多进程(pcntl,原生支持)

适合:CLI 脚本、定时任务、爬虫、队列处理

sudo apt install php-cli

示例(fork 多进程):

$pid = pcntl_fork();
if ($pid == -1) {
    die('fork failed');
} elseif ($pid) {
    // 父进程
} else {
    // 子进程
    echo "child\n";
    exit;
}

⚠️ 注意:

  • 只能用于 CLI
  • Web(php-fpm)不能用 pcntl

2. 使用 pthreads(真·多线程,已停止维护 ❌)

不推荐

  • 只支持 PHP 7.0–7.2
  • 需 ZTS(线程安全)PHP
  • 官方已废弃

二、现代方案(强烈推荐)

✅ 方案 1:Swoole(协程 / 多线程模型)

适合:高并发、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";
    });
});

✅ 优点:

  • 高性能
  • 支持协程、异步 IO
  • 生产级

✅ 方案 2:ReactPHP / Amp(异步非阻塞)

适合:HTTP 客户端、IO 密集型

composer require react/event-loop

三、Web 场景(PHP-FPM 本身就“并发”)

如果你只是想 同时处理多个请求

  • PHP-FPM 本身就是多进程
  • 不需要“线程”
  • 调优:
pm = dynamic
pm.max_children = 50

四、总结选择建议

需求 推荐方案
CLI 并发 pcntl / Swoole
Web 高并发 PHP-FPM + Swoole
并行计算 多进程
真线程 ❌ 不推荐

如果你能说明:

  • PHP 版本
  • 是否 Web 或 CLI
  • 具体业务(爬虫 / 队列 / API)

我可以给你 具体配置示例

0