l'envoi d'un non-blocage de la requête HTTP POST
J'ai deux sites web en php et python.
Lorsqu'un utilisateur envoie une requête au serveur, j'ai besoin de php/python pour envoyer une requête HTTP POST à un serveur distant. Je voudrais répondre à l'utilisateur immédiatement, sans attendre une réponse du serveur distant.
Est-il possible de continuer à exécuter php/python script après l'envoi d'une réponse à l'utilisateur. Dans ce cas, je vais d'abord répondre à l'utilisateur, et seulement ensuite envoyer la requête HTTP POST pour le serveur distant.
Est-il possible de créer un non-bloquante client HTTP en php/python sans avoir à manipuler la réponse à tout?
Une solution qui aura la même logique en php et python est préférable pour moi.
Grâce
OriginalL'auteur pablo | 2009-10-12
Vous devez vous connecter pour publier un commentaire.
En PHP, vous pouvez fermer la connexion en envoyant cette demande (ce qui est HTTP liées et travaille également en python, mais je ne sais pas la bonne syntaxe à utiliser):
Addendum: j'ai oublié de mentionner que vous avez probablement de définir le Contexte "Longueur". Aussi, découvrez ce commentaire pour des conseils et un véritable test.
Exemple:
Je ne sais pas votre cas d'utilisation. Si vous avez besoin d'effectuer un fonctionnement en arrière-plan, j'avais l'entourer de cadre dans le
ob_start()
...ob_end_flush()
paire. Mais ici, je suis dans le doute. MVC est un mot vide de sens pour moi... le meilleur candidat serait le contrôleur....le meilleur candidat...
+1, la meilleure solution pour non-bloquant
Ce n'est pas de travail pour moi... dans un script de test, après j'ai mis le header('Connection: Close"), j'ai mis un sleep(5). Lorsque je tape dans le navigateur, son toujours en train de dormir. Ai-je raté quelque chose?
OriginalL'auteur ntd
Vous pouvez générer un autre processus pour gérer le POST à l'autre serveur. En PHP, vous permettrait de lancer le processus et de "déconnecter" de sorte que vous n'avez pas à attendre pour la réponse.
Vous pouvez ensuite vous curl pour effectuer le post. Si vous voulez passer des paramètres au script PHP, vous pouvez utiliser le getopt (), fonction de les lire. Pas sûr que si vous faites quelque chose de similaire en Python.
OriginalL'auteur Brent Baisley
Ce que vous devez faire est d'avoir le script PHP d'exécuter un autre script qui ne le serveur d'appel et envoie ensuite à l'utilisateur le demande.
À droite, vous le feriez via exec() ou cURL. Vous n'êtes pas le démarrage d'un thread, vous êtes juste de lancer un autre script qui s'exécute indépendamment de votre celle qui traite de la réponse de l'utilisateur.
Donc, si exec() est trop lent, il suffit de faire via cURL. Faire une requête post à l'autre script avec les données de la demande de l'utilisateur secondaire script doit envoyer au serveur distant. Définir le secondaire script pour répondre à votre script principal avec "bien Reçu, merci" et continuer par la suite.
OriginalL'auteur Anthony
Vous devez utiliser fsockopen. Et ne pas écouter le résultat
OriginalL'auteur Mangirdas Skripka
Vous devez définir un homme du milieu. Donc, dans votre propre serveur, vous auriez:
OriginalL'auteur Francisco Luz
Narguilé est conçu pour résoudre votre problème.
OriginalL'auteur Dustin