PHP en fond

malopo
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: 6 Juil 2007

PHP en fond

Message le Mar Juil 17, 2007 22:37

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


HawkEye
WRInaute accro
WRInaute accro
 
Messages: 17013
Inscription: 23 Fév 2004

Message le Mar Juil 17, 2007 22:40

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).

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Message le Mer Juil 18, 2007 1:04

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)...


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Mer Juil 18, 2007 6:35

Et pourquoi pas tout simplement une mise en cache de tes pages ??


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19595
Inscription: 8 Aoû 2004

Message le Mer Juil 18, 2007 8:02

ou un appel en ajax de ton script ?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mer Juil 18, 2007 8:41

FloBaoti a écrit: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.

Genova
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 34
Inscription: 30 Sep 2006

Message le Mer Juil 18, 2007 11:07

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: Tout sélectionner
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).


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Mer Juil 18, 2007 11:14

je sais pas si les hebergements mutualisé permettent tout ca par contre ... vérifie ou ton site est hébergé

Genova
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 34
Inscription: 30 Sep 2006

Message le Mer Juil 18, 2007 11:24

La plupart des hébergeurs (tous ?) permettent register_shutdown_function(). La seconde solution marche partout.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités