公司要求用队列异步执行mysql写操作 , 由于php本身不支持多线程刚开始用计划任务执行队列 发现效果并不好,后来发现了pthreads可以让php支持真正的多线程,于是研究了一下pthreads 文档。其实使用pthreads 与使用java中的thread 类非常相似 。 下面介绍如何在wamp下安装pthreads。
1.查看phpinfo() 中的 thread safety 是否为 enable
2. 到 http://windows.php.net/downloads/pecl/releases/pthreads/ 找到你的php版本对应的包,我的是5.5
3.将下载的包中的 php_pthreads.dll 拷贝到 你的php扩展目中中 一般位置在 wanmp/bin/php/ext 中 ,并且修改php.ini extension=php_pthreads.dll 导入扩展
4.将pthreadVC2.dll 拷贝到 wamp/bin/apache/bin 中
5.修改window 系统环境变量,将wamp下的apache的bin目录添加到环境变量path的最后变。
6.重启计算机
下边我们编写测试php脚本
class MyThread extends Thread {
public function __construct($arg){
$this->arg = $arg;
}
public function run(){
if($this->arg){
echo "start run\r\n";
sleep(5);
printf("Hello %s\n", $this->arg);
}
}
}
$myThread = new MyThread('hello');
//启动多线程
$myThread->start();
echo "hello world!\r\n";
由于pthreads只能以cli模式运行 所以如果使用浏览器直接执行这个php脚本是不行的。
需要以php cli模式执行php
进去cmd 切换到wamp的bin目录中
执行 php.exe 你的测试脚本路径 就能看到测试结果了
好了 大功告成!