PHP下使用多线程
来源:互联网 发布:淘宝货到付款先发货 编辑:程序博客网 时间:2024/06/09 01:04
本文以Windows为例,讲解安装和使用php_pthreads扩展。
1.安装pthreads
打开 http://localhost/?phpinfo=1 找到 ‘PHP Extension Build’ 的版本
去 http://windows.php.net/downloads/pecl/releases/pthreads/ 上下载与你的php对应版本的 pthreads (要区分是 32 bit 还是 64 bit) 和 php extension build (本文使用的是 VC11)。解压 php_pthreads-2.0.9-5.6-ts-vc11-x64.zip
- 复制 php_pthreads.dll 到 ‘bin\php\ext\’ 安装目录
- 复制 pthreadVC2.dll 到 ‘bin\php\’ 安装目录
- 复制 pthreadVC2.dll 到 ‘bin\apache\bin’ 安装目录
- 复制 pthreadVC2.dll 到 ‘C:\windows\system32’ 安装目录
配置 php.ini 文件,新增一行:
extension=php_pthreads.dll
重启 Apache 并查看 phpinfo() 来确认是否安装成功。
2. 基于 Pthreads 扩展的多线程示例
如下例子引用 http://blog.phpha.com/archives/54/,打印 1 - 99,每次打印之间间隔 100ms。
<?php/** * 多线程示例 * @author PHPHa<mail@phpha.com> * @date 2016年8月15日 * @copyright http://blog.phpha.com *///继承父类class Test extends Thread{ public function __construct($arg){ $this->arg = $arg; } public function run(){ if($this->arg){ //休眠[100]毫秒/否则效果不明显 usleep(100000); echo $this->arg, PHP_EOL; } }}//多线程版本$script_stime = getMicroTime();//创建线程for($i = 0; $i < 100; $i++){ $pool[$i] = new Test($i); $pool[$i]->start();}//线程同步foreach($pool as $work){ while($work->isRunning()){ usleep(10); } $work->join();}//输出执行时间echo '[多线程]', outputTimes(), PHP_EOL;//脚本开始时间$script_stime = getMicroTime();//单线程版本for($i = 0; $i < 100; $i++){ $Obj = new Test($i); $Obj->run();}//输出执行时间echo '[单线程]', outputTimes(), PHP_EOL;//GET_MICRO_TIMEfunction getMicroTime(){ return round(microtime(true), 3);}//OPTPUT_EXECUTE_TIMESfunction outputTimes(){ global $script_stime; return sprintf('EXECUTE_TIMES: %.3fs', getMicroTime() - $script_stime);}
结果如下:
[多线程] EXECUTE_TIMES: 0.760s
[单线程] EXECUTE_TIMES: 10.091s
阅读全文
0 0
- PHP下使用多线程
- php如何 使用多线程?
- linux下多线程使用
- 多线程下使用sqlite
- 多线程下使用jedis
- 多线程下使用sqlite
- PHP 真正多线程的使用
- php使用curl多线程提交
- PHP 真正多线程的使用
- 使用PHP做多线程采集?
- PHP 真正多线程的使用
- PHP 真正多线程的使用
- PHP 真正多线程的使用
- PHP 真正多线程的使用
- PHP多线程扩展的使用
- linux下php多线程的妙用
- php下使用 $_FILE
- 多线程下小心使用GregorianCalendar
- #正念奇迹#ZQ0008《人类简史:从动物到上帝》
- 如何向整个 Git 仓库补提交一个文件
- linux svn使用实例(待完善)
- jetty启动项目时,BUILD FAILURE,程序包com.sun.org.apache.xml.internal.security.utils不存在
- #正念奇迹#ZQ0007《人类简史:从远古到二十一世纪》
- PHP下使用多线程
- #正念奇迹#ZQ0010《 颠覆性医疗革命》
- Android studio安装详解(Windows)
- Android的异常捕获
- MySql 游标的使用
- C语言——文字闪烁效果
- u盘破解WiFi密码
- 我的大三暑假培训(九月)
- #正念奇迹#ZQ0009《干法》