2009-04-29 8 views
4

J'ai un processus que je veux exécuter en arrière-plan d'une page. Le processus prendra un certain temps à s'exécuter, disons quelques minutes. Je l'ai configuré de sorte que de la page je puisse cliquer sur un bouton pour démarrer le processus, attendez un peu et puis il finira et je peux avoir la mise à jour de la page m'indiquant que le processus a été exécuté avec succès. Je fais ceci avec le prototype et le php.AJAX (prototype/php) obtenant des mises à jour partielles de l'état pendant l'exécution du script

Ce que je veux faire est d'avoir des mises à jour d'état pendant que le processus est en cours d'exécution. Donc, il pourrait mettre à jour une page me permettant de savoir combien d'enregistrements ont été traités jusqu'à présent ou mettre à jour une barre d'état ou quelque chose comme ça.

Est-ce possible? Je ne suis pas un grand gourou JS et je peux faire la fonctionnalité de base que j'ai déjà décrite mais je me demandais s'il était possible de l'étendre pour faire ce petit plus car je n'ai pas eu de chance de googler ou de regarder à travers docs.

Répondre

2

Avec PHP, vous finirez par faire des sondages. Vous devrez générer votre processus de longue durée en arrière-plan, et par exemple écrire dans une base de données de fichier ce que c'est la progression.

Le navigateur peut ensuite appeler un script PHP différent toutes les x secondes, ce qui rapporte avec ce statut. Polling craint cependant, mais c'est ce que vous êtes coincé avec PHP.

+0

Alors fourchez le processus, puis faites mettre à jour le processus un fichier/db ... ok qui pourrait fonctionner. Vous dites que PHP est ce que je suis coincé, je veux dire que je pourrais écrire ce module particulier en python ou perl ou quoi que ce soit, quelles seraient les autres options qui ne nécessitent pas d'interrogation? Juste curieux. –

+0

En fait .. SI vous utilisez CGI/mod_php ou autre chose ... ne pas fourchette! Il ne vous reste plus qu'à lancer un nouveau processus. (bien que techniquement cela soit aussi en train de forking, mais je voulais souligner la distinction). – Evert

Questions connexes