PHP多线程

327 阅读2分钟

1、扩展下载链接:https://windows.php.net/downloads/pecl/releases/pthreads

2、php扩展安装:pthreads

a)注意事项:
    i.Php必须是线程安全的版本(TS),可以在phpinfo中查看

image.png

    ii.查看php版本:

image.png

    iii.查看php编译器版本:

image.png

    iv.查看php软件的位数

image.png

    v.Php配置文件的路径

image.png

b)在上方链接中下载与你本地php环境相符合的扩展

image.png

    i.5.5代表php的版本
    ii.Ts代表线程安全
    iii.Vc11代表编译器版本
    iv.X86代表php是32位的
c)下载完成,打开压缩包找到两个文件
    i.php_pthreads.dll
    ii.pthreadVC2.dll
d)将php_pthreads.dll放入当前php的扩展目录中ext

image.png

e)将pthreadVC2.dll放入php的根目录

image.png

f)将pthreadVC2.dll放入apache的bin目录

image.png

g)将pthreadVC2.dll放入C:/windows/system32/目录下

image.png

h)修改php.ini文件,新增extension=php_pthreads.dll 至末尾
i)重启环境,重新打开phpinfo查看pthreads扩展是否安装成功

image.png

j)如果没有安装成功,严格执行以上流程,再来一次

3、实践体验php多线程的魅力

a)安装扩展后,php就可以使用Thread类,用于实现多线程操作,并包含以下方法

image.png image.png

b)我们用more_threads来继承Thread类
c)实现其中的run方法

image.png image.png

d)使用单线程与多线程两种方法请求采集网站
    i.多线程

image.png

    ii.单线程

image.png

e)执行代码

image.png

f)输出结果

image.png

g)我们可以看到多线程比单线程提升了16倍速度,随着请求数量越大,提升就越大,多线程可以始终保持在5秒左右,但是需要考虑内存空间

4、应用场景

a)I/O 文件操作,耗时较长
b)多个网络请求可能因为网络请求或延迟等问题,耗时长
c)大数据的分析处理,需要长时间操作
d)群发邮件,使用多线程可以大大的提高发送速度