OVH Cloud OVH Cloud

import malin

5 réponses
Avatar
Etienne SOBOLE
Salut.

bon le problem doit arriver souvant et les solutions doivent fleurir, mai
bon au final vous faites comment pour faire patienter l'utilisateur lorsque
votre script prendre plusieurs minutes a s'executer ?

mon idée serait de lancer le script php en tâche de fond (alors comment je
sais pas) qui execute l'import et qui écrit dans un fichier le pourcentage
d'avancement

et d'envoyer sur le navigateur une page qui fait un meta refresh toutes les
5 secondes par exemple et qui ne fait que lire le petit fichier indiquant
l'avancement...

ce bien, c'est pas bien, vous avez mieux?

Etienne

5 réponses

Avatar
Marc

Etienne


c'est un peu triché mais ca donne presque le meme rendu :

http://mire.ipadsl.net/speedtest/speedanim.gif

ca permet de faire patienter !

Avatar
Etienne SOBOLE
héhé.
c'st pas du tout ce que je cherche, mais c'est vrai qu'a défaut de mieux...
c'est deja ca.
"Marc" a écrit dans le message de news:
4190f34f$0$20026$

Etienne


c'est un peu triché mais ca donne presque le meme rendu :

http://mire.ipadsl.net/speedtest/speedanim.gif

ca permet de faire patienter !



Avatar
newdb
Etienne SOBOLE wrote:
bon le problem doit arriver souvant et les solutions doivent fleurir, mai
bon au final vous faites comment pour faire patienter l'utilisateur lorsque
votre script prendre plusieurs minutes a s'executer ?


avec du css.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"> -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>long tr&eacute;s long</title>
<style type="text/css">
.entet {
position:absolute;
z-index:2;
top:0;
left:0;
width:98%;
height:3em;
background-color:#cccccc;
border-bottom:0.1em outset #003366;
margin:0;
padding:1em 0 0 2em;
font-size:2em;
font-weight:bold;
}
.soustet {
position:absolute;
z-index:1;
top:0;
left:0;
width:90%;
height:2.8em;
background-color:#eeeeee;
border:0.1em outset #003366;
margin:0;
padding:1em 0 0 5em;
font-size:2em;
font-weight:bold;
color:red;
}
</style>
</head>
<body>
<p class="soustet">
Veuillez patienter un instant...
</p>
<div class="page">
<?php
*/
le_script_de_la_mort_qui_tue
/*
?>
</div>
<p class="entet">
voil&agrave; c'est bien d'avoir attendu !!!
</p>
</body>
</html>

bon. là, je suis pas en charte...
alors euh...
ha oui ! un petit script PHP <----- !!!
pour tester le ci-dessus,
le_script_de_la_mort_qui_tue :

<?php
function opentab($tableau) {
$tab = '<table cellspacing="1">rn';
while ( list($cle,$val) = each($tableau)) {
$tab .= "<tr>rn".
"<td bgcolor='#FFFF99'><b>".$cle."</b></td>rn".
"<td bgcolor='#FFFF99'>=</td> rn".
"<td bgcolor='#FFFF99'>";
if (is_array($val)) {
$tab .= opentab($val);
} else {
$tab .= $val;
}
$tab .= "</td>rn</tr> rn";
}
$tab .= "</table> rn";
return $tab;
}
$tab = get_defined_vars();
echo opentab($tab);
?>

--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="

Avatar
marc.quinton-PAS-DE-
Etienne SOBOLE wrote:

mon idée serait de lancer le script php en tâche de fond (alors comment je
sais pas) qui execute l'import et qui écrit dans un fichier le pourcentage
d'avancement

et d'envoyer sur le navigateur une page qui fait un meta refresh toutes les
5 secondes par exemple et qui ne fait que lire le petit fichier indiquant
l'avancement...

ce bien, c'est pas bien, vous avez mieux?


non, il n'y a pas mieux !

- dans ce cas, il faut gerer un contexte d'execution via les sessions par exemple
ou par les url.
- il faut savoir faire une reprise la ou la tache s'est arretée, a moins que
tu ne soit sur ta propre configuration unix, dans ce cas, il s'agit d'une vrai
tache de fond (process indépendant d'apache),
- le feedback entre la tache de fond qui est parfois muette et la vue extérieur
n'est pas toujours evidente. Tu peux faire comme sous Windows qui dans certaines
situations passe plus de temps a savoir combien de temps il va mettre que réaliser
la tache.

Avatar
Etienne SOBOLE
a écrit dans le message
de news: cmse6u$ssf$

non, il n'y a pas mieux !


Alors j'ai testé avec une page qui lance deux iframe
l'une calculant et l'autre faisant le meta refresh...

ca ne marche pas !!!!!!!!
Car ce chreugneugneu de IE ne fait pas le refresh tant que l'autre iframe
n'est pas terminé...
j'ai donc un joli : 0% puis a la fin du process 100%, ce qui est quand
meme un peu limité comme fonctionnement ;)

par contre ca fonctionne si la fenetre de progression est un popup...

- dans ce cas, il faut gerer un contexte d'execution via les sessions par
exemple
ou par les url.
- il faut savoir faire une reprise la ou la tache s'est arretée, a moins
que
tu ne soit sur ta propre configuration unix, dans ce cas, il s'agit d'une
vrai
tache de fond (process indépendant d'apache),
- le feedback entre la tache de fond qui est parfois muette et la vue
extérieur
n'est pas toujours evidente. Tu peux faire comme sous Windows qui dans
certaines
situations passe plus de temps a savoir combien de temps il va mettre que
réaliser
la tache.


heu...
ben non la c'est un script tout con.
par contre les session c'est pas bon car les variable de session ne snt pas
enregistrer vant la fin du script.
il faut donc passer par un fichier temporaire, qui marche tres bien (prevoir
l'emploi de flock sinon on a des surprise ;) )

Etienne