Boa tarde Senhores! fiz uma aplicação que chama uma stored procedure (Oracle) e dentro dela tem loops (pl/sql) para calcular varios contracheques. Peguei código fonte barra de progresso e fiz funcionar, mas quando executo a stored procedure, a barra de progresso fica parada, claro, porque executa um comando de cada vez. Ou seja, após o procedimento interno, mais ou menos 30 minutos, só depois a barra de progresso atualiza (0 a 100 de uma só vez) .
Pensei então executar thread para compartilhar as tarefas entre a barra de progresso e o procedimento interno. Alguém pode me dar alguma sugestão? Como funciona Thread no Scriptcase?
Qual código fonte barra de progresso?
http://pauloalencar.com/scriptcase/barra-de-progresso-no-scriptcase/
PHP Code:
// Barra de progresso $prb = new ProgressBar(400, 30); // create new ProgressBar (width:300px,height:30px)
$prb->left = 400; // position from left
$prb->top = 120; // position from top
$prb->addLabel(‘text’,‘txt1’);
$prb->setLabelFont(‘txt1’,‘20’);
$prb->setLabelPosition(‘txt1’,‘405’,‘122’,‘300’,‘20’);
$prb->setBarColor(’#00FF7F’);
$prb->setBarDirection(‘right’);
$prb->show(); // show the ProgressBar
$sql=“SELECT * FROM order_details UNION SELECT * FROM order_details UNION SELECT * FROM order_details UNION SELECT * FROM order_details UNION SELECT * FROM order_details”; sc_lookup(dataset,$sql);
$contador= count({dataset});
$prb->max = $contador;
for($b=0;$b<$contador;$b++) {
$nome = {dataset[$b][0]};
$cpf = {dataset[$b][1]};
$id = {dataset[$b][2]};
$prb->moveStep($b);
$prb->setLabelValue(‘txt1’,‘Processando: ‘.$b.’/’.$contador);
flush();
ob_flush();}
$prb->setLabelValue(‘txt1’,‘Concluido!’);
Só lembrando, o processamento (loop), fica no banco, aplicação apenas chama e mostra a barra de progresso, por isso, a necessidade de compartilhar a tarefa…
No seu caso, como o processamento fica no banco, vc deve gravar o percentual em uma tabela em memória e com Ajax buscar esse valor e ir apresentando na barra de progresso.
Aqui segue um exemplo com Ajax.
Obrigado! estava tentando por aqui, mas sem sucesso. Vou verificar o código