• windows环境下PHP7.4多线程设置


    windows环境下的PHP设置多线程时有一定的难度,难点主要是PHP版本的选择,多线程扩展的选择,以及相关的设置等。

    环境

    • windows 10
    • php-7.4.33-Win32-vc15-x64
    • php_parallel-1.1.4-7.4-ts-vc15-x64
    • phpstudy 8.1.1.2

    为了快速的部署PHP环境,我直接使用了小皮,但是小皮并不是关键因素,只是用它快速提供了apache.本文所使用软件如下图。
    在这里插入图片描述
    1.下载php

    php的版本一定是TS版的NTS版的不支持多线程。大家直接下载php-7.4.33-Win32-vc15-x64就可以了,其他很多版本我都试过没有成功。

    php-7.4.33-Win32-vc15-x64下载

    2.解压到小皮的扩展目录下

    将下载的PHP解压后复制到你的小皮的解压目录下Extensions\php目录下,下图是我的解压目录,供大家参考。
    在这里插入图片描述
    3.下载parallel扩展

    pthreads已经不再支持php7.4了,需要使用新的parallel扩展,注意parallel扩展的版本一定要和php的版本对应上,大家可以直接使用本文中提及的版本。

    php_parallel-1.1.4-7.4-ts-vc15-x64.zip下载

    将压缩包解压后,复制php_parallel.dll到你的php/ext目录下。

    复制pthreadVC2.dllphp主程序目录下。
    在这里插入图片描述
    php/ext路径添加到系统路径中。
    在这里插入图片描述
    大家根据自己php实际的路径进行添加系统路径

    4.验证

    首先重命名php-7.4.33-Win32-vc15-x64目录下的php.ini-developmentphp.ini,然后打开该文件在Dynamic Extensions 选项下添加extension=parallel,如下图。
    在这里插入图片描述
    添加完成后保存文件,打开小皮选择开启php.
    在这里插入图片描述
    重启apache重启网站。
    在这里插入图片描述
    在小皮的www目录下新建一个普通的a.php文件,这个php文件是用来被多线程调用的。

    
    	echo "hello...";
    
    • 1
    • 2

    example目录,并新建一个多线程调用的php文件,写入下面的代码。

    
    header("Content-Type:text/html;charset=utf-8");
    # a.php是被多线程调用的,路径根据实际书写
    $r1=new \parallel\Runtime('D:\phpstudy_pro\WWW\a.php');
    $r2=new \parallel\Runtime('D:\phpstudy_pro\WWW\a.php');
    $a=5;
    $future1=$r1->run(function ()use ($a){//线程1
        sleep(1);
        echo "this is thread1 start\n\r";
        $a++;
        echo "thread1 a is $a\n\r";
        sleep(5);
        echo "this is thread1 end\n\r";
        return 1;
    });
    
    $future2=$r2->run(function ($p1){//线程2
        echo "this is thread2 start\n\r";
        sleep(5);
        echo "thread2 a is $p1\n\r";
        echo "this is thread2 end\n\r";
        return 2;
    },[$a]);//外部变量也可以通过第二个参数传入线程
    
    $future3=$r2->run(function (){//线程3
        echo "this is thread3 start\n\r";
        sleep(5);
        echo "this is thread3 end\n\r";
        return 3;
    });
    echo "主线程开始\n\r";
    echo "future1的值是:".$future1->value()."\n\r";
    echo "future2的值是:".$future2->value()."\n\r";
    echo "future3的值是:".$future3->value()."\n\r";
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    进入php主程序目录,打开一个命令窗口,运行以下代码(大家根据自己实际情况修改)。

    php D:\phpstudy_pro\WWW\examples\test.php
    
    • 1

    在这里插入图片描述如果出现下图的输出说明你的windows下的php7.4的多线程就配置好了。

    在这里插入图片描述

  • 相关阅读:
    美国国家仪器NI控制器维修机箱电路板NI PXIe1082
    网络简答题带答案
    如何将图片存到数据库(以mysql为例), 使用ORM Bee更加简单
    【Python入门五】第三方库(包)介绍
    高压漏电继电器BLD-20
    RISC-V学习基础(四)
    扩散模型浅析
    线程的执行顺序
    Java 面试题:强引用、软引用、弱引用、幻象引用有什么区别?
    PHP有哪些优势和劣势
  • 原文地址:https://blog.csdn.net/alfiy/article/details/134280374