2012-12-15 2 views
0

J'essaie d'utiliser xbuf_frurl pour démarrer un travailleur pour effectuer un post-traitement.
Le travailleur terminera le travail sans rien retourner.
Ainsi, le script d'origine peut répondre au client plus rapidement.xbuf_frurl timeout = 0

Donc, j'essaie de régler le délai d'attente = 0 ms dans xbuf_frurl, dans l'espoir qu'il puisse revenir immédiatement et le reste du code et de retour 200.

xbuf_frurl(&buf, "localhost", 80, HTTP_GET, "/postprocessing", 0, 0); 
xbuf_ncat (reply, buf.ptr, buf.len); 

Mais, il ne semble pas de délai d'attente immédiatement, puisque le tampon n'est pas nul.

Y a-t-il une meilleure façon de le faire?

+0

Pour un usage interne, xbuf_frurl n'a pas besoin des en-têtes http compliqués. Je pense qu'il est bon d'avoir un paramètre pour désactiver les en-têtes standard, et envoyer les en-têtes de l'utilisateur seulement. –

+0

Cela casserait le protocole HTTP que xbuf_frurl() est censé utiliser. Pour lancer simplement un ping sur le serveur, vous devriez plutôt lancer un cycle de connexion()/send() shutdown() close() qui fonctionnera beaucoup plus rapidement. – Gil

Répondre

0

Le délai d'expiration xbuf_frurl() est destiné à échouer plus rapidement lorsque l'hôte cible n'accepte pas la connexion TCP. Donc, pour répondre à votre question, le délai d'attente n'aura aucune influence sur le temps de réponse puisque le serveur est toujours en ligne. Je ne suis pas sûr que l'interrogation d'une servlet à partir d'une autre servlet (ou self) est la meilleure façon de faire ce que vous voulez faire, mais je ne peux pas vous donner une meilleure stratégie si je ne sais pas quel est votre objectif est (le «post-traitement» mystérieux peut sûrement être déclenché plus efficacement qu'en utilisant une connexion HTTP). Si vous souhaitez utiliser une connexion HTTP, vous pouvez demander à la servlet d'envoyer une réponse minimale en utilisant un code d'état HTTP incorrect, soit la plage 1-99: ceci est utilisé pour empêcher G-WAN d'ajouter des en-têtes HTTP manquants , par exemple pour envoyer des charges utiles JSON nues.