文档章节

PHP 初试多线程pthreads扩展

IamOkay
 IamOkay
发布于 2016/04/03 12:15
字数 386
阅读 685
收藏 6

pthread是unix-like多线程支持库,这里可以作为php的多线程扩展支持库。

我下载的是php_pthreads-2.0.10-5.3-ts-vc9-x86.zip,电脑是64bit,也就是说pthreads在64bit系统上兼容32bit,此版本支持php5.3.x线程安全(ts)版本,当然也名称标注了5.3-ts版本。

 

注意:下载x64位版本加载不成功的同学,可以打开apache的log看看是什么问题,如果问题不清楚,不妨下载x86版本的试试也行啊

 

在这里安装方式请参阅

PHP安装pthreads多线程扩展教程

学习请参考自带的Sample或者参考 

PHP 高级编程之多线程

 

注意:不要安装太新的版本,否则有可能安装不成功,一定要和php的版本匹配。

 

来段代码测试一下:

<?php
error_reporting(E_ALL);
ob_implicit_flush();
header('content-type:text/html;charset=utf-8');


class AsyncTask extends Thread {

  private $arg;
  private $index;

  public function __construct($arg){
    $this->arg = $arg;
    $this->index = 0;
  }
  public function run(){
    if($this->arg){
     
    while($this->index<5)
    {
    	  echo  microtime(true)."--".$this->arg."->ID:".(Thread::getCurrentThreadId())."---index=".$this->index."<br/>";
    	 $this->index++;
    }
    }
  }
}
$threadA = new AsyncTask("WokerA");
$threadB = new AsyncTask("WokerB");
if($threadA->start() && $threadB->start())
 {
 	$threadA->join();
	$threadB->join();
 	$index = 0;
 	while($index<5){
 	    echo "<font color='red'>".microtime(true)."---主线程ID".(Thread::getCurrentThreadId())."--index=".$index."</font><br/>";
 	    $index++;
 	}
 }else{
 	 echo "failed";
 }


?>


运行结果

通过时间输出对比,我们发现,主线程和子线程符合多线程运行效果,但对于结果的输出和时间不匹配,可是每个线程都有一个缓冲区吧(I Guess)。

 

 

© 著作权归作者所有

IamOkay

IamOkay

粉丝 204
博文 483
码字总数 403228
作品 0
海淀
程序员
私信 提问
PHP开启多线程扩展

php从5.3开始支持多线程pthreads扩展,并同时支持window和linux。 pthreads可以实现多任务同步或异步执行,它提供了创建多线程应用所需的全套工具,默认未安装。 安装 window系统下:http://...

ttlxihuan
2017/02/14
0
0
如何让您的php也支持pthreads多线程

  我们常常会碰到这样一种情况,开发环境在windows下开发,而生产环境确是linux。windows下能正常运行,上传到linux后却无法好好地玩耍了。然后开始了一轮尼玛式的疯狂的查找原因,最后发现...

无声胜有声
2015/05/10
0
0
PHP 高级编程之多线程

PHP 高级编程之多线程 http://netkiller.github.io/journal/thread.php.html Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890...

netkiller-
2014/05/16
6.1K
12
PHP 高级编程之多线程(第三版)

PHP 高级编程之多线程 http://netkiller.github.io/journal/thread.php.html Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890...

netkiller-
2014/06/13
1K
2
PHP安装pthreads多线程扩展教程[windows篇]

一、判断PHP是ts还是nts版 通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。 二、根据PHP tsnts版选择对...

bengozhong
2015/08/11
134
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部