Sr’s
Alguem já usou um CJuiProgressBar pra informar o progresso de um action que está lendo e processando um arquivo texto de 5 mil linhas ??
Tentei passar o progresso via session mas nao tive sucesso.
A barra de progresso ficou assim
<?php
$session=new CHttpSession;
$session->open();
$this->widget('zii.widgets.jui.CJuiProgressBar', array(
'id'=>'progress',
'value'=>$session['progressBar'],
'htmlOptions'=>array(
'style'=>'width:500px; height:20px; float:left;'
),
));
?>
A função em javascript que estou tentando pegar o progresso.
function progressBarTest(){
/* start DB operation */
$.ajaxSetup({async:true});
$.ajax({
url: '<?php echo CController::createUrl('site/processtext'); ?>',
async: true,
dataType: 'json'
});
var myInterval = setInterval(function(){
$.getJSON('<?php echo CController::createUrl('site/progressbarsession'); ?>', function(data) {
$('#total').text(data.progressBar+'%');
$('#progress').progressbar({
value: data.progressBar,
complete: function(event, ui) {
clearInterval(myInterval);
}
});
});
}, 500);
return false;
}
O Código dos actions
public function actionProgressBarSession() {
$session=new CHttpSession;
$session->open();
echo CJSON::encode(array(
'progressBar' => $session['progressBar'],
));
}
public function actionProcessText() {
if (Yii::app()->request->isAjaxRequest) {
$session=new CHttpSession;
$session->open();
for ($i=0;$i<20;$i++)
{
// Aqui seria a leitura do arquivo txt
$session['progressBar'] = $session['progressBar'] + 1;
sleep(1);
}
echo CJSON::encode(array(
'progressBar' => $session['progressBar'],
));
Yii::app()->end();
}
}