Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

php多线程与并发

作者:﹏丶夜,深了   发布日期:2026-01-30   浏览:54

<?php

// 引入pthreads扩展,这是PHP实现多线程的库
// 注意:pthreads扩展仅在CLI模式下可用,并且需要PHP版本为7.2或更低版本。
// PHP 8.0及更高版本不再支持pthreads扩展。

class MyThread extends Thread {
    public function run() {
        // 线程执行的任务
        for ($i = 0; $i < 5; $i++) {
            echo "Thread " . $this->getThreadId() . " is running iteration " . $i . "\n";
            sleep(1); // 模拟耗时操作
        }
    }
}

$threads = [];
for ($i = 0; $i < 3; $i++) {
    $threads[$i] = new MyThread();
    $threads[$i]->start(); // 启动线程
}

foreach ($threads as $thread) {
    $thread->join(); // 等待所有线程完成
}

echo "All threads have finished.\n";

?>

解释说明:

  1. 引入pthreads扩展

    • pthreads 是 PHP 实现多线程的扩展。它允许你在 PHP 中创建和管理线程。需要注意的是,pthreads 扩展仅在 CLI(命令行接口)模式下可用,并且适用于 PHP 7.2 或更低版本。PHP 8.0 及更高版本不再支持此扩展。
  2. 定义线程类

    • MyThread 类继承自 Thread 类,并重写了 run() 方法。run() 方法是线程启动后执行的任务逻辑。
  3. 线程任务

    • run() 方法中,我们使用一个简单的 for 循环来模拟线程的工作。每次迭代都会输出当前线程的 ID 和迭代次数,并通过 sleep(1) 模拟耗时操作。
  4. 启动线程

    • 使用 start() 方法启动线程。每个线程会独立运行其 run() 方法中的代码。
  5. 等待线程完成

    • 使用 join() 方法确保主线程等待所有子线程完成后再继续执行。这可以防止主线程提前结束,导致子线程未完成即被终止。
  6. 输出信息

    • 最后,当所有线程完成后,输出一条消息表示所有线程已结束。

注意事项:

  • 由于 pthreads 扩展在 PHP 8.0 及更高版本中已被移除,如果你使用的是较新的 PHP 版本,可能需要考虑其他并发解决方案,例如协程(如 Swoole)、进程控制(如 pcntl_fork)或其他异步编程库。

上一篇:php读取csv文件

下一篇:php爬虫框架

大家都在看

php session用法

php 定义常量

phpisset函数

php html转图片

php后端

php爬虫框架

php多线程与并发

php读取csv文件

php+mysql动态网站开发

phpmyadmin docker

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站