• 售前

  • 售后

热门帖子
入门百科

实例讲解php实现多线程

[复制链接]
右脸破相gl 显示全部楼层 发表于 2021-10-26 13:46:36 |阅读模式 打印 上一主题 下一主题
我们起首来看一个示例
  1. <?php
  2. class execMulti {
  3. function MultithreadTest {
  4.   exec("php static_massive.php > /dev/null &");
  5.   echo "处理完成了";
  6. }
  7. }
  8. ?>
复制代码
当实验上述操纵时,即使在耗时的处置惩罚竣事之前也显示处置惩罚完成。
  1. exec("php static_massive.php > /dev/null &");
复制代码
由于“ > / dev / null& ”返回的值丢失,我们不会等待响应。
因此,处置惩罚完成指示比耗时处置惩罚更快。
但是,该方法不知道耗时的处置惩罚何时竣事。
不要忘记思量接纳日志的实验,登录DB等方法向用户传递实验效果。
用于多线程的方法(pthreads)
末了,介绍利用PHP扩展模块pthreads的方法。
它可以比上面利用exec的方法更简朴。
①设置情况并安装php
请利用vagrant等准备喜欢的情况。
php 需要利用线程安全版本,这是多线程和安全的实现。
从官方下载线程安全版本的 PHP。
访问以下内容并从图中的红框下载。
http://www.php.net/downloads.php

别的,对于线程安全安装,您需要利用configure选项指定-enable-maintainer-zts。
  1. ./configure --enable-maintainer-zts
复制代码
根据需要,也可以安上Apache和mysql的选项。
用以下下令确认了php的版本就可以了。
  1. php -v
复制代码
②pthreads的安装
我们来下载zip格式。
https://github.com/krakjoe/pthreads/archive/master.zip
解压zip,移动到解压缩文件,然后实验phpize。
假如您在PHP模块列表上运行pthreads,则可以实验以下操纵。
  1. php -m
复制代码
根据情况的不同,这一块的设定也会有所不同,可以用情况名+pthreads等举行检索来寻找信息。
③实验利用多线程
示比方下
  1. <?php
  2. class pthreadsTest extends Thread {
  3. public function run () {
  4.   sleep(5);
  5. }
  6. }
  7. $ts1 = new pthreadsTest();
  8. $ts1->start();
  9. $ts2 = new pthreadsTest();
  10. $ts2->start();
  11. ?>
复制代码
因为sleep(5)被调用两次,以是需要10秒,但现实上它将是5秒。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作