php+pthread的安装,PHP多线程扩展(正儿八经的线程)pthreads安装_PHP教程

环境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

make

make install

结果就把线程安装版的php安装到了/usr/local/php-zts,目前我不了解开启线程安全到底会带来什么影响,所以,就弄两个测试版本。

下载和安装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目录下有些示例文件,比文档有用,在线文档根本不能说明问题,我修改了一个,执行了一下:

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

http://www.bkjia.com/PHPjc/532685.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/532685.htmlTechArticle环境CentOS 6.3 64bit,php 5.4.5 pthreads需要线程安全环境, 下载php的安装包,解压: tar zxvf php-5.4.5.tar.gz//名字是不是这个我不确定,自己去下载...

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值