文档章节

php - 多线程

小伟哥
 小伟哥
发布于 2014/04/16 21:52
字数 265
阅读 161
收藏 6

###1. php5.3 以上版本(必须是线程安全),使用php_pthreads扩展,可以使php真正地支持多线程。 ###2. 下载安装

  1. windows 下载地址 windows 注意需要将“pthreadVC2.dll”拷贝到windows目录下。
  2. linux 下载地址 linux
  3. 参考文档 文档

###3. 测试代码 使用多线程平均时间:8.5S, 使用foreach循环平均时间:22.0S

<!-- lang: php -->
<?php
//多线程测试
class myThread extends Thread{
	public $url 	= null;
	public $data 	= null;

	public function __construct($url){
		$this->url = $url;
	}

	public function run(){
		$this->data = model_http_curl_get($this->url);
		$file = './pic/' . md5($this->url) . '.html';
		file_put_contents($file, $this->data);
	}
}


function getByThread($urls){
	$thread_array = array();
	foreach ($urls as $key => $value){
        $thread_array[$key] = new myThread($value["url"]);
        $thread_array[$key]->start();
    }
}

function getByforeach($urls){
	foreach($urls as $key=>$value){
		echo $key;
		$data = model_http_curl_get($value["url"]);
		$file = './pic/' . $key . '.html';
		file_put_contents($file, $data);
	}
}



 function model_http_curl_get($url,$userAgent=""){
	$userAgent = $userAgent ? $userAgent : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)';
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);  
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_TIMEOUT, 5);
	curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
	$result = curl_exec($curl);
	curl_close($curl);
	return $result;
}


//开始测试
$urls_array = array();
for ($i=1; $i <= 30; $i++){
	
    //$urls_array[] = array("url" => "http://www.baidu.com/s?wd=".mt_rand(10000,20000));
    $urls_array[] = array("url" => "http://tu.duowan.com/gallery/86760.html#p". $i);
}
//多线程
getByThread($urls_array);

//foreahc循环 - 平均 22.0s
//getByforeach($urls_array);
?>

本文转载自:http://blog.s135.com/pthreads/

小伟哥
粉丝 3
博文 8
码字总数 1383
作品 0
福州
程序员
私信 提问
加载中

评论(0)

PHP 初试多线程pthreads扩展

pthread是unix-like多线程支持库,这里可以作为php的多线程扩展支持库。 我下载的是php_pthreads-2.0.10-5.3-ts-vc9-x86.zip,电脑是64bit,也就是说pthreads在64bit系统上兼容32bit,此版本...

IamOkay
2016/04/03
703
0
如何让您的php也支持pthreads多线程

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

无声胜有声
2015/05/10
0
0
PHP开启多线程扩展

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

ttlxihuan
2017/02/14
0
0
有没有一种代码类似php的,但是有完美支持多线程并能做客户端开发的语言?

用惯了php,发现php的数组、正则、json支持、读写数据库、读写xml等等功能很强大,但是它对多线程、大数据量读写、客户端开发(类似vb开发出来的客户端应用)却基本不支持。 而java倒是对多线...

赵开锦
2012/12/25
438
6
PHP 真正多线程的使用

PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程。多线程在处理重复性的循环任务,能够大大缩短程序执行时间。 原文:http://blog.s135.com/pthreads/ 张宴   我之前的...

eechen的粉丝
2013/12/24
6.3K
7

没有更多内容

加载失败,请刷新页面

加载更多

如何添加或更新查询字符串参数?

使用javascript,如何将查询字符串参数添加到url(如果不存在)或如果存在,则更新当前值? 我正在使用jquery进行客户端开发。 #1楼 我已经扩展了该解决方案,并将其与我发现的另一个解决方案...

技术盛宴
22分钟前
49
0
恭喜你,Get到一份 正则表达式 食用指南

先赞后看,养成习惯 前言 正则表达式 正则表达式: 定义一个搜索模式的字符串。 正则表达式可以用于搜索、编辑和操作文本。 正则对文本的分析或修改过程为:首先正则表达式应用的是文本字符串...

鹿老师的Java笔记
22分钟前
40
0
《 Python编程快速上手:让繁琐工作自动化》分享下载

书籍信息 书名:《 Python编程快速上手:让繁琐工作自动化》 原作名:Automate the Boring Stuff with Python: Practical Programming for Total Beginners 作者: Albert Sweigart 豆瓣评分...

开始以后_
25分钟前
63
0
Java--代码执行顺序(静态初始化块,初始化块,构造函数)

先上结论 执行顺序:先执行静态初始化块,然后时初始化块,最后是构造函数 书写格式: 注意事项: 1. 静态初始化块   静态初始化块只在类首次加载时执行一次,同时静态初始化块只能给静态变...

fairy1674
29分钟前
39
0
第八课:《Linux就该这么学》课堂笔记

“工作马马虎虎,只想在兴趣和游戏中寻觅快活,充其量只能获得一时的快感,绝不能尝到从心底涌出的惊喜和快乐,但来自工作的喜悦并不像糖果那样—放进嘴里就甜味十足,而是需要从苦劳与艰辛中...

宣城热点科技
29分钟前
73
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部