Home  >  Article  >  Backend Development  >  php安装threads多线程扩张

php安装threads多线程扩张

WBOY
WBOYOriginal
2016-06-13 12:27:321025browse

php安装threads多线程扩展

php5.3或以上,且为线程安全版本。apache和php使用的编译器必须一致。
通过phpinfo()查看Thread Safety为enabled则为线程安全版。
通过phpinfo()查看Compiler项可以知道使用的编译器。本人的为:MSVC9 (Visual C++ 2008)。

 

一、下载pthreads扩展
下载地址:http://windows.php.net/downloads/pecl/releases/pthreads

 

二、安装pthreads扩展
复制php_pthreads.dll 到目录 bin\php\ext\ 下面。
复制pthreadVC2.dll 到目录 bin\php\ 下面。
复制pthreadVC2.dll 到目录 C:\windows\system32 下面。
打开php配置文件php.ini。在后面加上extension=php_pthreads.dll
提示!Windows系统需要将 pthreadVC2.dll 所在路径加入到 PATH 环境变量中。我的电脑--->鼠标右键--->属性--->高级--->环境变量--->系统变量--->找到名称为Path的--->编辑--->在变量值最后面加上pthreadVC2.dll的完整路径(本人的为C:\WINDOWS\system32\pthreadVC2.dll)。

 

三、添加thread类

<?php <br />class Thread<br>{<br><br>    var $hooks = array();<br>    var $args = array();<br><br>    function thread()<br>    {<br><br>    }<br><br>    function addthread($func)<br>    {<br>        $args = array_slice(func_get_args(), 1);<br>        $this->hooks[] = $func;<br>        $this->args[] = $args;<br>        return true;<br>    }<br><br>    function runthread()<br>    {<br>        if(isset($_GET['flag']))<br>        {<br>            $flag = intval($_GET['flag']);<br>        }<br>        if($flag || $flag === 0)<br>        {<br>            call_user_func_array($this->hooks[$flag], $this->args[$flag]);<br>        }<br>        else<br>        {<br>            for($i = 0, $size = count($this->hooks); $i             {<br>                $fp=fsockopen($_SERVER['HTTP_HOST'],$_SERVER['SERVER_PORT']);<br>                if($fp)<br>                {<br>                    $out = "GET {$_SERVER['PHP_SELF']}?flag=$i HTTP/1.1rn";<br>                    $out .= "Host: {$_SERVER['HTTP_HOST']}rn";<br>                    $out .= "Connection: Closernrn";<br>                    fputs($fp,$out);<br>                    fclose($fp);<br>                }<br>            }<br>        }<br>    }<br>}<br><br><br>

四、测试pthreads扩展

include('thread.php');<br>class AsyncOperation extends Thread {<br>    public function __construct($arg){<br>        $this->arg = $arg;<br>    }<br><br>    public function run(){<br>        if($this->arg){<br>            printf("Hello %s\n", $this->arg);<br>        }<br>    }<br>}<br>$thread = new AsyncOperation("World");<br>if($thread->start())<br>    $thread->join();<br><br><br>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn