免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 30632 | 回复: 11
打印 上一主题 下一主题

PHP多线程类(Thread) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-24 22:26 |只看该作者 |倒序浏览

  1. <?php
  2. /**
  3. @title:PHP多线程类(Thread)
  4. @version:1.0
  5. @author:axgle <axgle@126.com>
  6. */

  7. $th=new thread(10);//10个线程
  8. $th->exec('demo');//执行自定义的函数

  9. function demo() {
  10.         fopen('data/'.microtime(),'w');
  11. }

  12. class thread {
  13.         var $count;
  14.         function thread($count=1) {

  15.                 $this->count=$count;
  16.         }
  17.    
  18.            function _submit() {
  19.                 for($i=1;$i<=$this->count;$i++) $this->_thread();
  20.                 return true;
  21.         }

  22.         function _thread() {
  23.                 $fp=fsockopen($_SERVER['HTTP_HOST'],80);
  24.                 fputs($fp,"GET $_SERVER[PHP_SELF]?flag=1\r\n");
  25.                 fclose($fp);
  26.         }
  27.        
  28.         function exec($func) {
  29.                 isset($_GET['flag'])?call_user_func($func):$this->_submit();
  30.         }


  31. }

  32. ?>

复制代码

论坛徽章:
0
2 [报告]
发表于 2006-02-25 13:56 |只看该作者
就是同时提交几个请求?

论坛徽章:
0
3 [报告]
发表于 2008-07-13 20:47 |只看该作者
估计楼上对多线程的理解有误,我把你的代码稍微改了一点,就算不懂程序看一下输出结果,就知道根本不是什么多线程

<?php
/**
@titleHP多线程类(Thread)
@version:1.0
@author:axgle <axgle@126.com>
*/

$th=new thread(10);//10个线程
$th->exec('demo');//执行自定义的函数

function demo() {
    fopen('data/'.microtime(),'w');
}

class thread {
        var $count;
        function thread($count=1) {
                $this->count=$count;
        }

        function _submit() {
                for($i=1;$i<=$this->count;$i++) {
                        $this->_thread($i);
                }
                return true;
        }

        function _thread($i) {
                $fp=fsockopen($_SERVER['HTTP_HOST'],80);
                fputs($fp,"GET {$_SERVER['PHP_SELF']}?flag=1\r\n";
                fclose($fp);
                // --------------------------------------
                sleep(mt_rand(0, 3));
                print $i . 'ok at ' . microtime(1) . '<br>';
                // ---------------------------------------
        }
   
        function exec($func) {
                isset($_GET['flag'])?call_user_func($func)this->_submit();
        }
}

?>

论坛徽章:
0
4 [报告]
发表于 2008-07-13 22:46 |只看该作者
不错

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
5 [报告]
发表于 2008-07-14 13:17 |只看该作者
这叫做借助外力的伪多,多年前我发过这样子的东西,呵呵

论坛徽章:
0
6 [报告]
发表于 2008-07-14 15:51 |只看该作者
唉,还能达到一些 效果

论坛徽章:
0
7 [报告]
发表于 2009-12-02 15:11 |只看该作者
原帖由 HonestQiao 于 2008-7-14 13:17 发表
这叫做借助外力的伪多,多年前我发过这样子的东西,呵呵


大佬,您还在chinaunix啊。快7年了吧?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
8 [报告]
发表于 2009-12-02 17:32 |只看该作者
PHP我主要做网站了,关于这些功能真没怎么研究!

论坛徽章:
0
9 [报告]
发表于 2010-03-09 15:33 |只看该作者
这不是多线程是多请求!

论坛徽章:
0
10 [报告]
发表于 2011-02-15 12:50 |只看该作者
如果是命令行的该怎么做呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP