经过几天的研究和测试,我决定将此信息请求作为最后的手段发布: - )
我想做的事情很简单,但尽管我可以做所有的测试......我做不到: - (
使用symfony Framework v2.8,我想在执行控制器操作期间为进度条引导设置动画,并在用户单击按钮时进行动画制作。
我使用的原则是
当用户点击按钮时:
简而言之,没有什么比这更复杂的了: - )
我遇到的问题是我的SESSION变量读取操作在执行我的处理操作期间没有执行。在我采取行动之前
治疗是的,是的,但是在......不!
- >我不可能在处理过程中读取SESSION的变量,因此无法为进度条设置动画。
这是JS代码:
$('#generator').click(function() {
var isInProgress = false;
traitement();
function traitement()
{
isInProgress = true;
checkProgress();
$.ajax({
type: "GET",
url: '{{ path('sws_back_createplanning', { 'idChampionnat': Championnat.id })}}',
async : true,
cache: false,
dataType:'html',
success: function(data){},
error: function(){ },
complete: function(){
isInProgress = false;
}
});
}
function checkProgress()
{
if( isInProgress != false )
{
$.ajax({
type: "GET",
url: 'championnat/getprogress/',
async : true,
cache: false,
dataType:'html',
success: function(data){
/* animation de la progress bar */
},
error: function(){ },
complete: function(){
checkProgress();
}
});
} else { }
}
})
以下是处理操作代码:
public function traitementAction($id){
$session = new Session();
$session->set('progress', 0);
// traitement #1
$session->set('progress', 25);
// traitement #2
$session->set('progress', 50);
// traitement #3
$session->set('progress', 75);
// traitement #4
$session->set('progress', 100);
return new Response ("Traitement terminé");
}
以下是SESSION变量的读取操作的代码:
public function getProgressAction(Request $request)
{
$percent = $this->get('session')->get('progress');
if ($percent == 100){
$session = new Session();
$session->remove('progress');
}
return new Response($percent);
}
在我的测试中,我还将操作转换为“命令”并使用Process组件执行此“命令”。
家长/孩子。这意味着,如果我理解正确,一旦父进程(执行控制器操作)结束,这就结束了启动进程的子进程
“COMMAND” - >子进程无法在其父进程中存活。
以下是启动“COMMAND”的控制器操作的代码:
public function commandAction($id)
{
$commandline = "php console app:generate-planning ".$idChampionnat;
$process = new Process($commandline);
$dossier = $this->get('kernel')->getRootDir() . DIRECTORY_SEPARATOR;
$process->setWorkingDirectory($dossier);
$process->start(); // https://github.com/symfony/symfony/issues/20513
$process->wait(); // Pour ne pas que l'exécution de la commande ne soit 'Killée' ... mais empêche la lecture de la variable de SESSION tant que la commande n'est pas terminée
return new Response ("Commande démarrée");
}
总结一下我的问题,我不能同时执行我的两个查询。我当然要错过一些东西......你能帮助我吗?
最好的问候
答案 0 :(得分:0)
问题解决了...问题在于会话管理(关闭会话)。
- > https://openclassrooms.com/forum/sujet/plusieurs-requetes-ajax-en-meme-temps