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