PHP en fond

WRInaute discret
BOnjour,

J'ai un script PHP qui prend pas mal de temps a s'executer. J'aimerais donc faire en sorte qu'il puisse s'executer "en fond".
Un utilisateur ouvre une premiere page avec un formulaire a remplir par exemple. Pendant ce temps PHP tourne derriere et quand l'utilisateur passe a la page suivante, le script PHP a deja tourne et l'affichage de la page suivante se faitbeaucoup plus vite.

Comment peut-on faire qqch comme ca ?
Merci
 
WRInaute accro
A mon avis, ça ira plus vite de réfléchir à du positionnement absolu en css de parties de script terminées par flush() ;)

(simple piste... car je n'ai pas vu ton script).
 
WRInaute impliqué
Regarde du côté de ignore_user_abort.
Combiné à une iframe par exemple. Mais niveau sécurité ça me parait pas top.

En solution plus complexe, il y a :
- quand tu veux faire bosser le script, tu insère un enregistrement dans une BDD
- un script tourne en fond sur le serveur, et vérifie toutes les x minutes s'il y a un nouvel enregistrement dans la base (action à faire)...
 
WRInaute passionné
FloBaoti a dit:
Regarde du côté de ignore_user_abort.
Combiné à une iframe par exemple. Mais niveau sécurité ça me parait pas top.

En solution plus complexe, il y a :
- quand tu veux faire bosser le script, tu insère un enregistrement dans une BDD
- un script tourne en fond sur le serveur, et vérifie toutes les x minutes s'il y a un nouvel enregistrement dans la base (action à faire)...
Merci pour l'info. Je cherchais depuis longtemps un moyen de continuer le script même après un changement de page. Ca marche trop bien.
 
Nouveau WRInaute
Il y a deux moyens d'executer une script PHP en "background" :
1) via la fonction register_shutdown_function()
2) En appelant le script PHP via une image (balise <img src="script.php" />) sur ta page, avec un code du genre :
Code:
header('Content-length: 85');
header('Content-type: image/gif');
print base64_decode(
	'R0lGODlhAQABALMAAAAAAIAAAACAA'.
	'ICAAAAAgIAAgACAgMDAwICAgP8AAA'.
	'D/AP//AAAA//8A/wD//wBiZCH5BAE'.
	'AAA8ALAAAAAABAAEAAAQC8EUAOw=='
);
flush();

// ICI ton CODE PHP (sans affichage).
 
WRInaute accro
je sais pas si les hebergements mutualisé permettent tout ca par contre ... vérifie ou ton site est hébergé
 
Nouveau WRInaute
La plupart des hébergeurs (tous ?) permettent register_shutdown_function(). La seconde solution marche partout.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut