Bonjour tout le monde;
Je suis en train de développer une page web qui affiche les statistiques des pages visitées d'un site web: elle enregistre et affiche le nom du visiteur l'heure de visite et l'heure de sortie pour chaque page.
Pour l'algorithme que j'ai adopté: A l'entrée dans une page l’heure de début est marquée et enregistrée dans la session, à la sortie je fais appel à un script PHP via AJAX en utilisant jQuery. Dans ce script qui est associé à l’évènement unbeforeunload je rappelle la date début qui se trouve dans la session et je marque l'heure actuelle comme heure de sortie et j'enregistre le tout dans la base de données.
Le problème que j'ai c'est que cette méthode fonctionne à 100% mais parfois le script ne m'enregistre pas des pages.
je voudrais savoir quelles sont les possibilités qui peuvent empêcher le script de faire son travail?

voila mon script:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include('kitview/function.php');
session_start();
$jour = date('d');
$mois = date('m');
$annee = date('Y');
$heure = date('H');
$minute = date('i');
$seconde = date('s');
$fin = mktime($heure,$minute,$seconde,$mois,$jour,$annee);      
$dbh = ibase_connect($_SESSION['db_config'],$_SESSION["dbuser"],$_SESSION["dbpass"]) or die("<br>" . ibase_errmsg());   
$sql1 = 'insert into "STATISTIQUES" ("QUI","QUAND","FIN","RUBRIQUES","NOM_PRENOM","DUREE") values(\''.$_SESSION['qui'].'\',\''.php2FirebirdTime($_SESSION['debut']).'\',\''.php2FirebirdTime($fin).'\',\''.$_SESSION['rubriques'].'\',\''.$_SESSION['nom_prenom'].'\',\''.duree(php2FirebirdTime($_SESSION['debut']),php2FirebirdTime($fin)).'\')';
 
echo $sql1;
$rs = ibase_query($dbh, $sql1);
if($rs) echo 1;
else echo 0;
$sql ="select max(id_total) as grand from stat_total where nom_prenom = '".$_SESSION['nom_prenom']."'";
$handl = ibase_query($dbh,$sql);
while($row = ibase_fetch_object($handl))  {$big = $row->GRAND;}
$sql2 = 'update stat_total set fin_total = \''.php2FirebirdTime($fin).'\' , duree_total = \''.duree(php2FirebirdTime($_SESSION['debut_total']),php2FirebirdTime($fin)).'\' where id_total = '.$big;
$rs2 = ibase_query($dbh, $sql2);
exit(); 
?>
je vous montre aussi le code qui s’exécute dans chaque page:

code PHP:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
//code statistiques
$page = 'Comparateur';
	$_SESSION['rubriques'] = $page;
	$jour = date('d');
	$mois = date('m');
	$annee = date('Y');
	$heure = date('H');
	$minute = date('i');
	$seconde = date('s');
	$_SESSION['debut'] = mktime($heure,$minute,$seconde,$mois,$jour,$annee);
//fin code statistiques
code JavaScript:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<script language="javascript">
window.onbeforeunload = closeIt;
 function closeIt() {
		$.ajax({
					url : "out.php",
					success : function(data) {
						}
				});
 }
</script>