TP重大缺陷,一个方法没执行完,会影响整站的响应?

浏览:1497 发布日期:2013/09/23 分类:求助交流

已解决
------------------------------
澄清不是TP问题,是小白不懂session
感谢 @thinkphp 也感谢国家 感谢党
困扰半年的问题终于解决了。


由于业务需要,我有个方法需要从eBay获取订单,分析处理,保存到数据库,这一过程根据订单量可能会执行1-10分钟或更长时间,在此期间我用TP开发的其它程序都不能及时响应,需要等这个方法执行结束后才返回响应。是TP缺陷还是单一入口缺陷?如何做才能执行这个方法的时修,不影响其它页面呢?

不知道我的问题大小伙伴们是否了解,如果不能理解请看下面的实例:
文件:IndexAction.class.php<?php
class IndexAction extends Action {
    public function index(){
        $this->show('首页');
    }
    
    public function sleep(){
        sleep(9999);
    }
}
?>
文件:TestAction.class.php<?php
class TestAction extends Action {
    public function index(){
        echo 'Test';
    }

}
文件:/1.php<?php
sleep(9999);
?>
文件:/2.php<?php
    if($_GET['a']=='sleep'){
        sleep(9999);
    }
    var_dump($_GET);
?>
文件:/3.php<?php
    class test{
        function a(){
            echo 123;
        }
        
        function b(){
            echo 456;
        }
        
        function c(){
            sleep(9999);
        }
    }
    $test=new test;
    $a=isset($_GET['a'])?$_GET['a']:'a';
    $test->$a();
?>
运行:http://127.0.0.1/index.php/Index/index
输出:首页
运行:http://127.0.0.1/index.php/Index/sleep
输出:/*浏览器暂无反应,等待9999秒,在此期间执行下面连接:*/
运行:http://127.0.0.1/index.php/Index/index
输出:不能及时响应结果
运行:http://127.0.0.1/index.php/Test/index
输出:不能及时响应结果

运行:http://127.0.0.1/1.php
输出:/*浏览器暂无反应,等待9999秒,在此期间执行下面连接:*/
运行:http://127.0.0.1/2.php
输出:正常输出,不受干扰
运行:http://127.0.0.1/2.php?a=sleep
输出:/*浏览器暂无反应,等待9999秒,在此期间执行下面连接:*/
运行:http://127.0.0.1/2.php?a=bbb
输出:正常输出,不受干扰
运行:http://127.0.0.1/3.php
输出:正常输出,不受干扰

总结:
1.原生PHP开发,1个文件不会影响另一个文件执行
2.单一入口里,一个方法不会影响另一个方法执行

问题就是:TP控制器的方法没执行结束就会影响另外的方法执行,已测试过wamp,easyphp,xamp,phpstudy等多个环境,但都是windows的,
鄙人自学PHP不懂异步、线程之类的,但相信上面的例字应该能确定是TP的bug
最佳答案
评论( 相关
后面还有条评论,点击查看>>