时间:2021-07-01 10:21:17 帮助过:3人阅读
但有时候我们需要异步操作,多个线程同时运行,
下面我们来介绍php是如何实现多线程操作的
代码如下:
- 仅供参考<br><p></p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><?php</li><li>/**</li><li> * @title: PHP多线程类(Thread)</li><li> * @version: 1.0</li><li> * @author: php.cn < web@php.cn ></li><li> * @published: 2010-11-2</li><li> * </li><li> * PHP多线程应用示例:</li><li> * require_once 'thread.class.php';</li><li> * $thread = new thread();</li><li> * $thread->addthread('action_log','a');</li><li> * $thread->addthread('action_log','b');</li><li> * $thread->addthread('action_log','c');</li><li> * $thread->runthread();</li><li> * </li><li> * function action_log($info) {</li><li> * $log = 'log/' . microtime() . '.log';</li><li> * $txt = $info . "\r\n\r\n" . 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n";</li><li> * $fp = fopen($log, 'w');</li><li> * fwrite($fp, $txt);</li><li> * fclose($fp);</li><li> * }</li><li> */</li><li>class thread {</li><li> var $hooks = array();</li><li> var $args = array();</li><li> function thread() {</li><li> }</li><li> function addthread($func)</li><li> {</li><li> $args = array_slice(func_get_args(), 1);</li><li> $this->hooks[] = $func;</li><li> $this->args[] = $args;</li><li> return true;</li><li> }</li><li> function runthread()</li><li> {</li><li> if(isset($_GET['flag']))</li><li> {</li><li> $flag = intval($_GET['flag']);</li><li> }</li><li> if($flag || $flag === 0)</li><li> {</li><li> call_user_func_array($this->hooks[$flag], $this->args[$flag]);</li><li> }</li><li> else</li><li> {</li><li> for($i = 0, $size = count($this->hooks); $i < $size; $i++)</li><li> {</li><li> $fp=fsockopen($_SERVER['HTTP_HOST'],$_SERVER['SERVER_PORT']);</li><li> if($fp)</li><li> {</li><li> $out = "GET {$_SERVER['PHP_SELF']}?flag=$i HTTP/1.1\r\n";</li><li> $out .= "Host: {$_SERVER['HTTP_HOST']}\r\n";</li><li> $out .= "Connection: Close\r\n\r\n";</li><li> fputs($fp,$out);</li><li> fclose($fp);</li><li> }</li><li> }</li><li> }</li><li> }</li><li>}</li><li>$thread = new thread();</li><li>$thread->addthread('func1','info1');</li><li>$thread->addthread('func2','info2');</li><li>$thread->addthread('func3','info3');</li><li>$thread->runthread();</li><li>//说明:</li><li>//addthread是添加线程函数,第一个参数是函数名,之后的参数(可选)为传递给指定函数的参数。</li><li>//runthread是执行线程的函数。</li></ol></pre><p>本文由PHP中文网提供,介绍了如何使用PHP模拟出多线程功能。</p><p>文章地址:http://www.gxlcms.com/php-weizijiaocheng-377481.html</p><p>学编程就来PHP中文网 www.gxlcms.com</p><p>以上就是单线程的编程语言php是如何实现多线程操作的的详细内容,更多请关注Gxl网其它相关文章!</p>