PHP 真正多线程的使用
2024-10-10 16:49:25
以前使用curl的多线程并不是真正的多线程,只是一种模拟的多线程,现在使用pthreads来实现真正意义上的多线程。
下载:
windows下:
http://windows.php.net/downloads/pecl/releases/pthreads/0.0.45/
mac、unix、linux下:
https://github.com/krakjoe/pthreads
或:http://pecl.php.net/package/pthreads(含文档)
安装方式:
windows下:
解压得到pthreadVC2.dll和php_pthreads.dll文件,把vc2文件放到php.exe同级目录,把php_pthreads.dll放到扩展目录下。
修改php.ini文件 添加extension=php_pthreads.dll
修改Apache配置文件httpd.conf 添加LoadFile "yourpath/php/pthreadVC2.dll"
mac、unix、linux下:
具体可参考宴哥的博客http://zyan.cc/pthreads/
调用方式:
具体的用法也可以参考宴哥的博客http://zyan.cc/pthreads/
<?php
class Request extends Thread {
public $url;
public $data;
public function __construct($url) {
$this->url = $url;
}
public function run() {
// 线程处理一个耗时5秒的任务
for($i=0;$i<5;$i++) {
echo '线程: '.date('H:i:s')."\n";
sleep(1);
}
$response = file_get_contents($this->url);
if ($response) {
$this->data = array($response);
}
echo "线程: 任务完成\n";
}
}
$request = new Request('hello.html');
// 运行线程:start()方法会触发run()运行
if ($request->start()) {
// 主进程处理一个耗时10秒的任务,此时线程已经工作
for($i=0;$i<10;$i++) {
echo '进程: '.date('H:i:s')."\n";
sleep(1);
}
// 同步线程并输出线程返回的数据
$request->join();
echo '线程返回数据: '.$request->data[0];
}
/*
如果顺序执行,合计时间将是15秒,借助线程,则只需10秒.
生成文件: echo 'Hello' > hello.html
运行计时: time php req.php
查看线程: ps -efL|head -n1 && ps -efL|grep php
*/
最新文章
- 使用管道符在PowerShell中进行各种数据操作
- Java Js实现导出csv
- Maven 学习-入门
- .net MVC 中枚举类型Enum 转化成 下拉列表的数据源
- arcglobe 图层三大类说明
- Vmware中Ubuntu的各种问题
- 大数据分析与机器学习领域Python兵器谱
- POJ 3904 Sky Code (容斥原理)
- Android OptionMenu
- LCT小结
- WPF中的DataTemplate
- 揭开Linux操作系统的Swap交换区之谜
- Dapper的扩展这个你知道嘛?
- 【java设计模式】责任链模式
- iOS中多种方式实现打电话、发短信、写邮件
- Linux 中使用 firewalld
- Jmeter性能测试之进阶BeanShell的使用
- WC.exe【C】
- 聊一聊Java如何接入招行一网通支付功能
- Appium-desktop安装启用Inspector一直报错An unknown server-side error occurred...
热门文章
- webuploader在IE8/9下上传遇到的两个问题
- 1250 Super Fast Fourier Transform(湘潭邀请赛 暴力 思维)
- make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
- [Javascript] 前端随笔
- 如何快速找到排好序的数组中最先不连续的数字N
- AC自动机专题
- 【转】C# 控件的自定义拖动、改变大小方法
- JS应用,表单上的一些东西
- LINUX 常用命令 ps 详解
- HashMap的内部实现机制,Hash是怎样实现的,什么时候ReHash