Asynchronous 异步方法访问

Asynchronous 异步方法访问,asynchronous,yii,request,Asynchronous,Yii,Request,我只是想问一些关于Yii的事情。我意识到Yii页面控制器-方法不能在同一浏览器、不同选项卡的同时访问。在用户可以打开另一个页面之前,必须先完成该页面 class SiteController extends CController { public function actionIndex() { echo "Test1"; sleep(10); echo "Test2" } public function action

我只是想问一些关于Yii的事情。我意识到Yii页面控制器-方法不能在同一浏览器、不同选项卡的同时访问。在用户可以打开另一个页面之前,必须先完成该页面

class SiteController extends CController {

    public function actionIndex() {
        echo "Test1";
        sleep(10);
        echo "Test2"
    }

    public function actionIndex2() {
        echo "Test1";
        sleep(10);
        echo "Test2";
    }

}
例如,当我在13.00和13.01访问时,将在13.10渲染,并将在13.20或13.21左右渲染。我所期望的是代码将并行运行,第一个将在13.10中完成,第二个将在13.10或13.11中完成。像下面的php脚本一样,将其重命名为test.php,并在单独的选项卡中运行,但使用相同的浏览器

<?php
echo "Test1";
sleep(10);
echo "Test2";
?>
因此,Yii可以同时响应多个请求,而无需完成以前的请求。我在这里发现了同样的问题:还有这里

我仍然在寻找最好的解决办法。我正在尝试这个,现在


谢谢

如果您使用的是基于文件的会话,请求1将锁定会话文件,请求2将无法打开它,直到请求1完成。DCoder正确。因此,这不是一个Yii问题,而是任何使用基于文件的会话的PHP脚本的一般问题。作为一种解决方法,您可以使用CDbHttpSession组件。Hi DCoder&Michael,如果您在PHP中创建一个只包含下载文件by readfile的方法,则无法执行或下载,例如,Yii actionDownload中完全不同的文件,这会导致该方法等待用户下载完成。我认为Yii机制将在初始阶段锁定会话文件。所以,当我希望用户并行执行方法时,我决定使用session_write_close。