Heim >php教程 >php手册 >PHP 线程安全,多线程

PHP 线程安全,多线程

WBOY
WBOYOriginal
2016-06-06 19:52:552087Durchsuche

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




测试代码:

<?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 context

    pthreads allows write access to thread data from any context

    carry on reading ...

    work in progress ...

*/ 

classTestObject { 

    public$val

   

classFetching extendsThread { 

    publicfunction 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= 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

            */ 

            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



直接在网页没有输出,需要调用PHP脚本运行。


参照文章:

http://www.2cto.com/kf/201309/245093.html

http://blog.csdn.net/crz03128/article/details/25954441


编译了很久,做个记录。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn