Redondeando una fecha y hora MYSQL al primer intervalo de 15 minutos en milisegundos (PHP)

Estoy buscando una fecha y hora de MYSQL que se parece a:

2010-08-11 11:18:28

Necesito convertirlo en el "piso" o en el primer intervalo de 15 minutos y generarlo en milisegundos para otra función.

Entonces, este caso sería:

2010-08-11 11:15:00 en milisegundos

Whoops! Lo siento, necesito aclarar, ¡necesito un código que lo transforme en milisegundos DENTRO de php!

Hacer una prueba de tiempo reveló lo siguiente:

$time_start = microtime(true);
for($i=0;$i<10000;$i++)
    floor(strtotime('2010-08-11 23:59:59')/(60*15))*60*15*1000;
$time_end = microtime(true);
echo 'time taken = '.($time_end - $time_start);

tiempo tomado = 21.440743207932

$time_start = microtime(true);
for($i=0;$i<10000;$i++)
    strtotime('2010-08-11 23:59:59')-(strtotime('2010-08-11 23:59:59') % 900);
$time_end = microtime(true);
echo 'time taken = '.($time_end - $time_start);

tiempo tomado = 39.597450017929

$time_start = microtime(true);
for($i=0;$i<10000;$i++)
    bcmul((strtotime('2010-08-11 23:59:59')-(strtotime('2010-08-11 23:59:59') % 900)), 1000);
$time_end = microtime(true);
echo 'time taken = '.($time_end - $time_start);

tiempo tomado = 42.297260046005

$time_start = microtime(true);
for($i=0;$i<10000;$i++)
    floor(strtotime('2010-08-11 23:59:59')/(900))*900000;
$time_end = microtime(true);
echo 'time taken = '.($time_end - $time_start);

tiempo tomado = 20.687357902527

tiempo tomado = 19.32729101181

tiempo tomado = 19.938629150391

Parece que la función strtotime () es lenta y probablemente deberíamos evitar usarla doblemente cada vez que sea necesario. El timetaken (60 * 15)! = Timetaken (900) fue un poco sorprendente ...

Respuestas a la pregunta(4)

Su respuesta a la pregunta