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.本文所使用软件如下图。
windows环境下PHP7.4多线程设置_第1张图片
1.下载php

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

php-7.4.33-Win32-vc15-x64下载

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

将下载的PHP解压后复制到你的小皮的解压目录下Extensions\php目录下,下图是我的解压目录,供大家参考。
windows环境下PHP7.4多线程设置_第2张图片
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主程序目录下。
windows环境下PHP7.4多线程设置_第3张图片
php/ext路径添加到系统路径中。
windows环境下PHP7.4多线程设置_第4张图片
大家根据自己php实际的路径进行添加系统路径。

4.验证

首先重命名php-7.4.33-Win32-vc15-x64目录下的php.ini-developmentphp.ini,然后打开该文件在Dynamic Extensions 选项下添加extension=parallel,如下图。
windows环境下PHP7.4多线程设置_第5张图片
添加完成后保存文件,打开小皮选择开启php.
windows环境下PHP7.4多线程设置_第6张图片
重启apache重启网站。
windows环境下PHP7.4多线程设置_第7张图片
在小皮的www目录下新建一个普通的a.php文件,这个php文件是用来被多线程调用的。


	echo "hello...";

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";

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

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

windows环境下PHP7.4多线程设置_第8张图片如果出现下图的输出说明你的windows下的php7.4的多线程就配置好了。

windows环境下PHP7.4多线程设置_第9张图片

你可能感兴趣的:(windows,php)