9
votes

Comment faire une demande de courbure sans recevoir la réponse?

Normalement, je posterai des données quand j'approuve la boucle. Et j'attends la réponse, analyser, etc ...

Je veux simplement poster des données et ne pas attendre toute réponse. En d'autres termes, puis-je envoyer des données à une URL, via Curl et fermer ma connexion immédiatement? (Ne pas attendre une réponse, voire de voir si l'URL existe)

Ce n'est pas une chose normale à poser, mais je demande à toute façon.

Voici ce que j'ai jusqu'à présent: xxx


0 commentaires

3 Réponses :


7
votes

Vous pouvez le faire via les fonctions curl_multi _ * code> conçues pour exécuter plusieurs demandes simultanées - il suffit d'incendier une demande et ne vous inquiétez pas de la réponse.

Je ne sais pas ce que Les implications sont en termes de ce qui se passera si le script sort et la courbe est toujours en marche. P>

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $MyUrl);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_to_send); 
$mh = curl_multi_init();
curl_multi_add_handle($mh,$ch);
$running = 'idc';
curl_multi_exec($mh,$running); // asynchronous
// don't bother with the usual cleanup


0 commentaires

6
votes

Je crois que le seul moyen de pas réellement recevoir toute la réponse à partir du serveur distant consiste à utiliser curlopt_writtfunction . Par exemple: xxx

Notes importantes

  1. Sachez que cela générera un avertissement, car le transfert sera abandonné.
  2. Assurez-vous de ne pas définir la valeur de curlopt_returntransfer , car cela interférera avec le rappel écriture.

0 commentaires

1
votes

Je ne sais pas si cela aide, mais via la ligne de commande, je suppose que vous pouvez utiliser l'option '-MAX-Time' '' Heure "-" heure maximale en secondes que vous permettez à l'ensemble de l'opération. "

Je devais faire quelque chose de rapide et de sale et je ne voulais pas avoir à reprogrammer le code ni attendre une réponse, alors trouvé l'option --Max-Time dans le manuel de CURL

CURL --MAX-Time 1 URL


0 commentaires