Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2846 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Keskispass quand un script tourne et que le client se deconnecte...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Keskispass quand un script tourne et que le client se deconnecte...

n°1711204
azubal
Posté le 01-04-2008 à 18:44:29  profilanswer
 

Bonjour tout le monde.
 
Voici un code php simple :

Code :
  1. <?php
  2. set_time_limit(3600 * 24);
  3. jallouedesressources();
  4. while(true) {
  5. echo "wello php world!\n";
  6. }
  7. jedesallouedesressources();
  8. ?>


 
Un client affichant une page contenant ce code va se voir retourner du "hello php world" pendant 24h...
Maintenant que ce passe t il si le client se déconnecte avant ?
 
Ce que je souhaiterai c'est que lorsque le client se déconnecte, je sorte de la boucle et j'appelle la fonction jedesallouedesressources();.
Pour cela j'ai trouvé la fonction php : connection_status() qui retourne 1 si le client se déconnecte.
J'adapte mon code comme ceci :

Code :
  1. <?php
  2. set_time_limit(3600 * 24);
  3. jallouedesressources();
  4. while(true) {
  5. echo "wello php world!\n";
  6. if (connection_status() !== 0) break;
  7. }
  8. jedesallouedesressources();
  9. ?>


 
Et ca marche :D Sauf... Quand la connexion se coupe (donc pas de TCP FIN) et part en timeout...
Mon idée était donc de remplacer echo "hello php world" par :

Code :
  1. $stdout = fopen("php://output", "wb" );
  2. (...)
  3. $sw = array($stdout);
  4. $sr = $se = NULL;
  5. $r = stream_select($sr, $sw, $se, 3); // 3sec avant timeout
  6. if ($r === 0) { // timeout en écriture sur l'output donc buffer plein donc connexion tcp en timeout
  7. break;
  8. }
  9. fwrite($stdout, "hello php world!" );


 
 
Sauf que PHP me renvoie une erreur : cannot represent a stream of type Output as a select()able descriptor  :kaola:  
 
Et là je seche....

mood
Publicité
Posté le 01-04-2008 à 18:44:29  profilanswer
 

n°1711400
azubal
Posté le 02-04-2008 à 10:00:40  profilanswer
 

Upounet du matin :)

n°1711566
tomsoft
Posté le 02-04-2008 à 13:20:25  profilanswer
 

:hello:
 
jpourrais pas du tout t'aider mais,  
 
je viens de voir ton premier code,  

Code :
  1. <?php
  2. set_time_limit(3600 * 24);
  3.  
  4. while(true) {
  5. echo "wello php world!\n";
  6. }
  7. ?>


 
il fait quoi exactement ce set_time_limit() ?
 
il va exectuer la boucle pendant 24h ? et donc envoyer qqs milliards de "hello world" ?

n°1711575
azubal
Posté le 02-04-2008 à 13:39:29  profilanswer
 

Exactement.
J'ai volontairement simplifié mon code pour en faire un exemple et j'ai oublié de dire que le code contient aussi cette ligne ignore_user_abort(true); qui permet au script de continuer son exécution si le client se déconnecte.


Message édité par azubal le 02-04-2008 à 13:40:38
n°1711617
kao98
...
Posté le 02-04-2008 à 14:17:44  profilanswer
 

Mais, après le timout, ton script va être arrêté, mais il ne va pas désallouer tes ressources, si ?


Message édité par kao98 le 02-04-2008 à 14:17:57

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1711659
azubal
Posté le 02-04-2008 à 15:28:40  profilanswer
 

Au timeout le script est interrompu là ou il était, donc dans la boucle. Ce qui est après la boucle ne sera pas exécuté.
 
J'aurai du mettre un set_time_limit(0) qui signifie "pas de timeout".


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Keskispass quand un script tourne et que le client se deconnecte...

 

Sujets relatifs
ne pas faire planter mon scriptLOTUS SCRIPT
SCRIPT - Rechercher dans une page...[php] recherche script connexion phpbb3
Besoin d'aide Urgent pour script KSHScript Imprimante reseau par défaut
NTprobleme d'affichage avec un script
faire un script BATCH 
Plus de sujets relatifs à : Keskispass quand un script tourne et que le client se deconnecte...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR