mvc下application->run()在application的生命周期内有个类是一个单例类 [ 2.0 版本 ]
public function actionLoad(){
    //在读入数据的时候可以实现下进度条。
    //基本思路,点击开始导入后其实是响应一个ajax请求。
    //然后就开始了数据导入,然后前台不段的请求这个
    if(\Yii::$app->request->isAjax){
        Yii::$app->response->format = Response::FORMAT_JSON;
        $tool = FileRead::getMe();
        $ans = round( ($tool->rowsRead) / ($tool->allRowsNum*101));
        $res = [
            'done'=>$ans,
        ];
        //var_dump(self::$fileRead);
        return $res;
    }
}
public function actionRealload(){
    //在这里触发真正的读写文件 。    
    $tool = FileRead::getMe();
    $tool->ReadAndWrite($_POST['filename']);
}
FileRead是一个类,我想让这个类成为单例。即在application的生命周期内只存在一次。
测试时发现,切换了不同的action 那么 静态方法:getMe()获取的就不是上一次在别的action里创建的。
我想实现的效果是在我读文件 ,并写入数据库的时候,出现个进度条,反映我写了多少。 
现在我的想法是 前台不断请求actionLoad方法 返回当前已经读的。
而actionRealload是真正要去读文件并写的。
现在我想要实现两个方法里使用的FileRead类是同一个。这就需要一个单例。但是我在这又造不出单例
或者大家给我如何写进度条一个提示。
共 2 个回答
qiliux
            注册时间:2015-07-27
最后登录:2016-01-26
在线时长:2小时22分
    最后登录:2016-01-26
在线时长:2小时22分
- 粉丝1
 - 金钱94
 - 威望0
 - 积分114