Barre de progression avec PHP & Ajax

Je suis en train de travailler sur la barre de progression qui met à jour les progrès réalisés à l'aide de requêtes ajax et les variables de session. Quand mon programme effectue de temps de fonctionnement telles que l'envoi de nombreux e-mails, etc. il vient de régler correctement les variable de session (qui contient la valeur de progression). Cette opération est lancée par la fonction post() dans le code ci-dessous.

Dans l'intervalle, la seconde fonction de demande() est exécutée en boucle tous les 500ms. Il doit retourner les progrès en cours en temps réel. Et là est le problème: chaque demande envoyée par demander() sont en attente pour les demandes envoyées par la poste() la fonction est terminée. Le plus drôle, c'est que si j'ai mis une URL comme google.com au lieu de l'url/de/de progrès, il fonctionne très bien, sauf que c'est pas ce que je veux :). Ce qui signifie que le problème est sur le côté serveur.

Ne sais pas si c'est important mais j'utilise Yii Framework.

Tout le code ci-dessous n'est rien (mais de travail) et son seul but est de montrer ce que je voulais dire.

Merci d'avance.

Désolé pour mon mauvais anglais 🙂

Vue:

<script type="text/javascript">
function ask() {
  var d = new Date();
  var time = d.getTime();
  $.ajax({

    type: 'get',
    url: '/url/to/progress' + '?time=' + time,
    success: function(data) {
      $("#progress").html(data);
    }
  })
}

function post() {
  var d = new Date();
  var time = d.getTime();

  $.ajax({
      type: 'post',
      url: '/url/to/post' + '?time=' + time,
      data: {"some": "data"},
      success: function(data) {alert(data)}
    });
}

$("#test").click(
  function() {
    post();
    var progress = setInterval("ask();", 500);
  }
);
</script>

Contrôleur partie:

public function actionPost($time) {
  sleep(5); //time consuming operation
  echo $time . ' : ' . microtime();
  exit;
}

public function actionProgress($time) {
  echo $time . ' : ' . microtime();
  exit;
}
quelle est la réponse de votre obtenir à partir du serveur ? vérifiez sur les outils de dev > réseau > xhr demandes

OriginalL'auteur pawelo | 2012-02-16