[ Toutes les pages - php ]

Scripts PHP asynchrones (en parallèles) Préférences

Pargager sur facebook

Afficher le menu

Deux scripts sont asynchrones si le premier n'a pas besoin d'attendre que le second lui fasse parvenir un résultat pour poursuivre son exécution.

On peut procéder comme suite.

Lepremier script appelle le second à l'aide dela fonction:

function do_post_request($url, $data, $optional_headers = null,$getresponse = false) {
	$params = array('http' => array(
		'method' => 'POST',
		'content' => $data
	));
	if ($optional_headers !== null) $params['http']['header'] = $optional_headers;
	$ctx = stream_context_create($params);
	$fp = @fopen($url, 'rb', false, $ctx);
	if (!$fp) return false;
	if ($getresponse){
		$response = stream_get_contents($fp);
		return $response;
	}
	return true;
}

qui permet de lui passer des données par la méthode POST, par l'intermédiaire de $data qui est construit à partir d'un tableau associatif. Voici un exemple:

$post = array('Nom' => $nom , 'Prenom' => $prenom);
$data = http_build_query($post);

Pour que les scripts soient asynchrones, le second script commencera par le code suivant:

ob_start();
header('Connection: close');
ignore_user_abort();
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();

Le script ainsi appelé ne doit évidemment pas devoir renvoyer d'informations au script appelant. Il peut faire un traitement tel que l'envoi d'un mail, ou une longue mise à jour de données, ou remplacer une tâche cron. Il doit toutefois rester dans la limite de temps déterminée par max_execution_time, que l'on peut modifier à l'aide de set_time_limit().

Valid XHTML 1.0Strict Valid CSS

AccueilPage précédenteHaut de pagePage suivante