PHP 多线程扩展(正儿八经的线程)pthreads安装
来源:互联网 发布:linux系统日志路径 编辑:程序博客网 时间:2024/05/01 05:27
环境CentOS 6.3 64bit,php 5.4.5
pthreads需要线程安全环境,
下载php的安装包,解压:
tar zxvf php-5.4.5.tar.gz//名字是不是这个我不确定,自己去下载
安装:
./configure --enable-zts --prefix=/usr/local/php-zts //或者 --enable-maintainer-zts
make
make install
结果就把线程安装版的php安装到了/usr/local/php-zts,目前我不了解开启线程安全到底会带来什么影响,所以,就弄两个测试版本。
如果遇到undefined reference to `executor_globals_id'
make clean就可以了
下载和安装pthreads:
tar zxvf pthreads
cd pthreads-0.0.45 // 本文的是第一个stable版本
/usr/local/php-zts/bin/phpize
./configure --with-php-config=/usr/local/php-zts/bin/php-config
make
make install
/usr/local/php-zts/bin/php -i|grep "php.ini"
找出php.ini的位置,修改它把ext=pthreads.so加入进入进去,因为我原来就有php,现在新装的php.ini文件不存在我就考了一个过去……
pthreads-0.0.45/examples目录下有些示例文件,比文档有用,在线文档根本不能说明问题,我修改了一个,执行了一下:
<?php/** Sharing symbols 101* @NOTE Thread::fetch was never included in a release and was superceeded by object handlers* pthreads allows read access to thread data from any contextpthreads allows write access to thread data from any contextcarry on reading ...work in progress ...*/class TestObject {public $val;}class Fetching extends Thread {public function run(){/** of course ...*/$this->sym = 10245;$this->arr = array("1", "2", "3");echo '6'.chr(10);/** objects do work, no preparation needed ...* read/write objects isn't finalized ..* so do the dance to make it work ...*/$obj = new TestObject();$obj->val = "testval";$this->obj = $obj;echo '7'.chr(10);/** will always work*/$this->objs = serialize($this->obj);echo '8'.chr(10);/** nooooooo*/$this->res = fopen("php://stdout", "w");echo '9'.chr(10);/** tell the waiting process we have created symbols and fetch will succeed*/$this->synchronized(function(){ $this->notify();});echo '10'.chr(10);/* wait for the process to be finished with the stream */$this->synchronized(function(){ $this->wait();});echo '11'.chr(10);}}echo '0'.chr(10);$thread = new Fetching();echo '1'.chr(10);$thread->start();//sleep(1); 加了这个就不能正常工作,真奇怪echo '2'.chr(10);$thread->synchronized(function($me){echo '3'.chr(10); $me->wait();echo '4'.chr(10);}, $thread);echo '5'.chr(10);/** we just got notified that there are symbols waiting*/foreach(array("sym", "arr", "obj", "objs", "res") as $symbol){printf("\$thread->%s: ", $symbol);$fetched = $thread->$symbol;if ($fetched) {switch($symbol){/** manual unserialize*/case "objs":var_dump(unserialize($fetched));break;default: var_dump($fetched);}}printf("\n");}/* notify the thread so it can destroy resource */$thread->synchronized(function($me){ $me->notify();}, $thread);?>
/usr/local/php-zts/bin/php Fetch.php
结果:
0
1
2
3
6
7
8
9
10
4
5
$thread->sym: int(10245)
$thread->arr: array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
}
$thread->obj: object(TestObject)#2 (1) {
["val"]=>
string(7) "testval"
}
$thread->objs: object(TestObject)#2 (1) {
["val"]=>
string(7) "testval"
}
$thread->res: resource(3) of type (stream)
11
发个全点儿的php编译参数:
./configure
--prefix=/usr/local/php-zts
--enable-sockets
--enable-pcntl
--enable-maintainer-zts
--enable-sysvmsg
--enable-mbstring
--with-mysql=/usr
--with-mysql-sock=/var/lib/mysql/mysql.sock
--with-mysqli=/usr/lib64/mysql/mysql_config
--with-pdo-mysql=/usr/lib64/mysql/mysql_config/configure
我的QQ群:
PHPer&Webgame&移动开发,群号:95303036
windows版:
http://blog.csdn.net/aoyoo111/article/details/19020161
- PHP 多线程扩展(正儿八经的线程)pthreads安装
- wamp安装pthreads扩展(PHP多线程)
- wamp安装pthreads扩展(PHP多线程)
- wamp安装pthreads扩展(PHP多线程)
- php安装pthreads多线程扩展
- windows下安装php真正的多线程扩展pthreads教程
- windows下安装php真正的多线程扩展pthreads教程
- windows下xampp安装PHP的pthreads多线程扩展
- wamp安装pthreads扩展(PHP多线程) windows
- PHP安装pthreads多线程扩展[windows篇]
- PHP 多线程扩展 pthreads
- php 多线程 pthreads扩展
- windows下安装php的pthreads扩展
- iis7.0安装php的pthreads扩展
- php 多线程 pthreads安装
- PHP多线程扩展pthreads实例
- PHP多线程扩展pthreads示例
- PHP的pthreads扩展
- 类设计之 里氏代换原则
- C++与Linux网络编程实战
- 【JS】JQuery分页
- SQL编程风格
- Ubuntu使用笔记——系统管理
- PHP 多线程扩展(正儿八经的线程)pthreads安装
- 重写和重载的区别
- C++常见面试题
- 演化博弈理论与应用研究综述[转]
- Android JB MediaPlayerService Interface Analysis
- C#調用CodeSoft打印條碼
- Android USB Host开发之manager.getDeviceList()获取不到设备列表
- Oracle技术支持是如何分析数据库性能问题的
- UL里的LI元素左浮动层一行显示时,使其居中