Executer un script sans attendre la réponse de l'url

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 874 fois - Téléchargée 16 fois

Contenu du snippet

Des fois on a besoin d’exécuter un script en appelant une url, sans attendre la réponse dans le cas ou le script risque de prendre beaucoup de temps.

l'astuce c'est d'utiliser "curl_multi_exec" qui permet de lancer plusieurs urls en même temps (asynchrone)
et c'est en utilisant une boucle qu'on récupère le contenu de chaque url. donc il faut juste breaker la boucle aussitôt..

Source / Exemple :


<?php
function callUrl($url){
	$cmi = curl_multi_init();
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_multi_add_handle($cmi, $curl);
	
	do {
		curl_multi_exec($cmi, $running);
		//on attends quelques micro secondes puis on break la boucle.
		//comme ça on arrive a appeler l'url sans attendre la réponse  
		usleep(1000);
		break;
	} while ($running > 0);
	
	curl_multi_remove_handle($cmi, $curl);
	curl_multi_close($cmi);
}

//l'url du script en a executer
callUrl("http://www.bing.com");

A voir également

Ajouter un commentaire

Commentaires

Bonjour, je fesais mes recherches quand je suis tombe sur votre poste.
je suis confronte a un probleme.
Je m'explique, je veux envoyer des sms a plusieur numeros. L'envoie d'sms reviens a execute un url. j'ai pu recuperer les numeros dans un tableau et j'ai fait la boucle mais je n'ai pas le resultat atendu
voici mon code,


foreach ($listeabonne as $thisUser) {
echo $thisUser['telephone'];

$thisNumber = $thisUser['telephone'];


$request = sprintf('http://xxx.x.xxx.xxx/bulksms/bulksend.go?username="'.$user.'"&password="'.$pass.'"&originator=TDECEDEAO&phone="'.$thisNumber.'"&msgtext="'.$message);



}


qu'est ce qui manque? ou c'est une erreur? bref j'ai besoin d'aide et c'est urgent.
Merci d'avance pour votre aide
Messages postés
14725
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020
144 > nytho
As-tu essayé avec des requêtes non bloquantes ?

$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, "....");
curl_exec ($ch);
curl_close ($ch);


Regardes la doc de CURL (php curl).
Regardes le code retour, etc.

Il se peut que CURL soit bloqué ou limité selon ton hébergeur.
>
Messages postés
14725
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020

Bonjour et desole pour le retard de ma reponse.
Je vais voir la doc de CURL et vous tenir informer de la suite
Grand merci
> nytho
Bonsoir les amis.
J'ai resolu mon probleme et je poste mon code qui a marche.

		function getSSLPage($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
if($finoff>0)
{
for($i=0;$i<$nbabonne;$i++)
{
$phon=$listeabonne[$i]['telephone'];
$phon = substr($phon,1).',';
$phon =str_replace(' ','',$phon);
$phone .= $phon;

$url = "http://xxx.x.xxx.xxx/bulksms/bulksend.go?username=$user.com&password=$pass&originator=$signator&phone=$phone&msgtext=$message";

//echo $url.'</br>';
}
ar_dump(getSSLPage("$url"));


Merci a tous pour votre aide
Messages postés
14725
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020
144 > nytho
Cette source traite des requêtes non bloquantes, avec CURL, tu peux facilement faire des requêtes bloquantes.
Sinon, as-tu affiché l'URL générée, histoire de voir si ce ne serait pas l'URL qui serait mal formée ?
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.