[php] - arret d'un script si aucune action

theflagada Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
dragondark Messages postés 481 Statut Membre -
Bonjour,

Voila ce que j'essaye de faire:

Je veux arreter l'execution d'un script php si rien ne se passe pendant un temps donné (par exemple 60 secondes).

En effet si aucun utilisateur ne fait une action , je stop au bout de 60 secondes. PAr contre si au cours de ces 60 secondes un utilisateur envoi une info ( un bouton submit ou autre), alors je remet le timer à 60. et je recommence a compter et ainsi de suite. Ainsi si rien ne se passe le script s'arrete sinon continue.

Quelqu'un saurait-il comment faire s'il vous plait?

4 réponses

Nabla's Messages postés 20731 Statut Contributeur 3 194
 
salut.

le time out par défaut est paramètré dans le fichier php.ini... ca me parait dur de faire ce que tu veux.

De plus, si l'utilisateur fait une action, comme tu dis, ca va lancer le déroulement d'une page en parallèle, , difficile (pas impossible) de les faire interagir en PHP.

quel genre de scipt fais tu pour avoir besoin de réamorcer la timeout ?
0
dragondark Messages postés 481 Statut Membre 159
 
il faut savoir que le script php est un script serveur et donc s'exécute avant l'affichage de la page web.
si tu tien a faire du php après l'affichage je te propose l'ajax (javascript d'appel php)
tu fais un 'setTimeout() avec le code qui va bien
0
theflagada Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   4
 
En fait voila quelques détails:

pour information:
-J'utilise une glib event loop donc mon script tourne sans arret tant que je ne lui ai pas dit de s'arreter.
-mon script est lancé en ligne de commande et tourne en cgi

voila en gros ce que je cherche à faire ( mais qui ne marche pas). quand la boucle est lancée, je n'arrive pas à l'arreter.

private $_stop;


public function receive_signal_utilisateur ()
{
	//si la fonction est appelée ( quand l'utilisateur envoi un signal), je casse la boucle!
	$this->return1();

	// je fais une action quelconque

 	//je remets la valeur de stop à 0
	$this->return0();

	//je relance la boucle
	$this->timer();

}
public function return0()
{
	return $this->_stop = 0;
}
public function return1()
{
	return $this->_stop = 1;
}
//fonction timer qui compte avant d'arreter le script
public function timer()
{
	$count = 60;
	$sleep = 1;
 
	while($countdown > 0) 
	{
		if ($this->_stop == 1) break;
		else if($this->_stop == 0) 
		{
			$count--;
		}
		sleep($sleep);
	}
	exit(0);
}


0
dragondark Messages postés 481 Statut Membre 159
 
et c'est quoi les actions possible par les utilisateurs?
0