Alors on prend ta solution Darkandgel
. J'ai codé un ptit script pour récupérer la valeur du chrono avec le JS (comme ça tu peux utiliser le chrono dans tes fichiers HTML et pas que PHP).
Le fichier chrono.js :
// chrono.js
// TW97
function Chrono(){
this.getElapsedTime = function(callback){
this.sendXHR('get_elapsed_time', function(rep){
if(rep !== false && !isNaN(rep))
callback(Math.floor((new Date() - new Date(parseInt(rep)) * 1000) / 1000));
else
callback('error');
});
};
this.start = function(){
this.sendXHR('start');
};
this.stop = function(){
this.sendXHR('stop');
};
this.sendXHR = function(actionChrono, callback){
var xhr;
if(window.XMLHttpRequest)
xhr = new XMLHttpRequest();
else if(window.ActiveXObject)
{
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
} catch(e){
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
}
xhr.open('POST', 'chrono.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && typeof callback == 'function')
{
if(xhr.status == 200)
callback(xhr.responseText);
else
callback(false);
}
};
xhr.send('action=' + actionChrono);
};
}
Le fichier chrono.php :
<?php
// chrono.php
// TW97
session_start();
if(!empty($_POST['action']))
{
if($_POST['action'] == 'start')
$_SESSION['chrono'] = time();
elseif($_POST['action'] == 'stop')
unset($_SESSION['chrono']);
elseif($_POST['action'] == 'get_elapsed_time' AND !empty($_SESSION['chrono']))
echo $_SESSION['chrono'];
else
echo 'error';
}
La petite page de test (doit être dans le même dossier que les 2 fichiers précédents, sinon il faut modifier chrono.js
test.html :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Test Chrono</title>
</head>
<body>
<button onclick="tempsEcoule()">Obtenir le temps écoulé</button>
<button onclick="arreter()">Arrêter le chronomètre</button>
<button onclick="redemarrer()">Redémarrer le chronomètre</button>
<div id="log"></div>
<script src="chrono.js"></script>
<script>
var logElem = document.getElementById('log'), chrono = new Chrono();
chrono.start();
logElem.innerHTML = '<strong>Chronomètre lancé</strong>';
function tempsEcoule(){
chrono.getElapsedTime(function(secondes){
if(secondes != 'error')
logElem.innerHTML += '<br/>Temps écoulé : ' + secondes;
else
logElem.innerHTML += '<br/>Une erreur est survenue !';
});
}
function arreter(){
chrono.stop();
logElem.innerHTML = '<strong>Chronomètre arrêté</strong>';
}
function redemarrer(){
chrono.start();
logElem.innerHTML = '<strong>Chronomètre lancé</strong>';
}
</script>
</body>
</html>
Voilà 
PS: à la base je voulais faire un truc plus simple sans les callbacks, càd avec des requêtes synchrones mais je me suis dit qu'il vaut mieux éviter sinon Darkandgel va encore m'engueuler 