您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP 线程安全,多线程

2025/10/24 19:41:37发布11次查看
3.添加扩展 php.ini添加 : extension=pthreads.so; 如果你是之前安装过php,那么, /usr/local/php-zts/bin/php -i|grep php.ini 这个语句帮你找到php.ini位置。 找出php.ini的位置,修改它把ext=pthreads.so加入进入进去,因为我原来就有php,现在新装的php
3.添加扩展php.ini添加 :  extension=pthreads.so;
如果你是之前安装过php,那么,/usr/local/php-zts/bin/php -i|grep php.ini 这个语句帮你找到php.ini位置。
找出php.ini的位置,修改它把ext=pthreads.so加入进入进去,因为我原来就有php,现在新装的php.ini文件不存在我就考了一个过去……
4.查看扩展是否安装成功/usr/local/php5.5.12-zts/bin/php -i | grep -i pthreads
测试代码:
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=newtestobject(); 
        $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=newfetching(); 
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
            */ 
            caseobjs: 
                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
直接在网页没有输出,需要调用php脚本运行。
参照文章:
http://www.2cto.com/kf/201309/245093.html
http://blog.csdn.net/crz03128/article/details/25954441
编译了很久,做个记录。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product