17-09-2011, 11:58 AM
difficile de dire si le script est lancé 2 fois ou bien la requete bafouille (a priori ca ne vient finalement pas de APC...)
voici un extrait du code, le meilleur moyen de reproduire mon bug est de double cliquer comme un goret sur le lien qui lance ce petit bout de code:
le bug ne se produit pas à chaque double-click, et d'ailleurs vu que je verifie le double-click le bug ne peut pas se produire sauf que cela se produit quand même:
ci dessous l'enregistrement d'un double click qui s'est quand même produit:
click 1 du double-click:
time() = 1316252205
time()-$_SESSION['submit_microtime'] = 12.868062973
click 2 du double-click:
time() = 1316252205
time()-$_SESSION['submit_microtime'] = 12.868062973
donc le click 1 est strictement identique au click 2, le double click est quand même passé malgré la vérification du microtime, le resultat qui se produit est que le batiment est lancé en attente de construction pour le même niveau:
batiment en construction niv 9 et batiment en construction niv 9
AU LIEU DE:
batiment en construction niv 9 et batiment en construction niv 10
autre hypothese:: est ce le choix de la config d'apache2 qui peut etre en cause (mode worker ou forker) ?
(17-09-2011, 10:47 AM)Sephi-Chan a écrit : Peux-tu montrer un peu le code ?
voici un extrait du code, le meilleur moyen de reproduire mon bug est de double cliquer comme un goret sur le lien qui lance ce petit bout de code:
init_submit_microtime(); // on initialise $_SESSION['submit_microtime']
if((time()-$_SESSION['submit_microtime'])>CONF_submit_delais) // on verifie qu'une demande n'a pas été soumise durant les 2 dernieres secondes
{
$_SESSION['submit_microtime']=microtime(true); // on enregistre le microtime de soumission du formulaire
construction_batiment($param1 , $param2, $etc , $etc); // on construit
}
// FUNCTION init_submit_microtime
//
//
// DESRIPTION: initialise la variable de session $_SESSION['submit_microtime'] (microtime du dernier soumission de formulaire ou lien cliqué)
//
function init_submit_microtime()
{
if(!isset($_SESSION['submit_microtime']) or empty($_SESSION['submit_microtime']))
{
$_SESSION['submit_microtime']=0;
}
}
le bug ne se produit pas à chaque double-click, et d'ailleurs vu que je verifie le double-click le bug ne peut pas se produire sauf que cela se produit quand même:
ci dessous l'enregistrement d'un double click qui s'est quand même produit:
click 1 du double-click:
time() = 1316252205
time()-$_SESSION['submit_microtime'] = 12.868062973
click 2 du double-click:
time() = 1316252205
time()-$_SESSION['submit_microtime'] = 12.868062973
donc le click 1 est strictement identique au click 2, le double click est quand même passé malgré la vérification du microtime, le resultat qui se produit est que le batiment est lancé en attente de construction pour le même niveau:
batiment en construction niv 9 et batiment en construction niv 9
AU LIEU DE:
batiment en construction niv 9 et batiment en construction niv 10
autre hypothese:: est ce le choix de la config d'apache2 qui peut etre en cause (mode worker ou forker) ?