2010-07-21 6 views
0

Je me demandais s'il est possible d'envoyer la sortie de l'application exécutée par php au client.Exécution de l'application externe asynchrone en PHP

Par exemple, j'ai application qui génère:

Hello world 

Et au bout de 10 secondes, il envoie

10 seconds passed 

Je voudrais savoir s'il est possible d'envoyer « Bonjour mot » et " 10 secondes passent "au client sans attendre jusqu'à ce que l'ensemble du programme termine son travail. Le client recevrait "Bonjour tout le monde" en premier et après 10 secondes la deuxième sortie.

Merci.

+0

Est-ce parce que le chargement de votre page peut prendre plus de 10 secondes? Quelque chose comme une barre de progression? Ou ce deuxième message se produit-il après le chargement de la page? –

Répondre

0

Votre titre indique "Exécution d'application externe asynchrone". Par là, vous voudriez dire quelque chose qui va exécuter un programme à partir de votre script PHP, mais continuez sur son propre processus et ne bloquez pas le chargement de la page PHP. Vous pouvez vouloir passthru() spécifiquement placer la commande pour produire dans un fichier local plutôt que votre manuscrit (personnellement non testé, bien que le manuel PHP dise que vous pouvez), ou pcntl_fork() pour séparer votre manuscrit dans un processus séparé qui traitera l'exécution de programme sur le côté. Cependant, envoyer deux fois à un navigateur après qu'il s'est déjà déconnecté de votre serveur et s'attendre à ce qu'il affiche votre message non invité est impossible à moins d'installer un cheval de Troie sur le client qui acceptera automatiquement votre deuxième connexion forcée tcp. Mais, si vous voulez un message de progression pour votre chargement de page, faites simplement écho à "still loading ..." n'importe où le long d'un certain nombre de boucles for ou while. D'autre part, les barres de progression du téléchargement de fichiers ne peuvent pas être traitées en PHP. En écho à "charger encore ..." dans le milieu du téléchargement va corrompre le fichier. À l'heure actuelle, je ne connais pas la possibilité de le faire en utilisant une méthode PHP, Javascript ou VB, sauf dans l'API du navigateur (si documentée) si le client le permet en installant un plugin que vous avez créé. Mais pourquoi, quand les navigateurs ont déjà des barres de progression intégrées?

0

Je pense que vous devriez le faire avec javascript. Il est totalement inutile d'utiliser cpu-cycles sur le serveur tant que toutes vos exigences ne sont pas dépassées.

-1

Je ne comprends pas votre application, mais pour le traitement par lots ce vient à l'esprit:

php bonjour-World.php | php client.php

Pour l'agrandir, utilisez Hadoop.

Questions connexes