Seguramente han visto en algunos sitios o blogs, en los post o comentarios la fecha en formato: escrito por tal_usuario hace 10 días 9 horas 7 minutos. Yo siempre me preguntaba como se hace, así que investigando (googleando) no di, así que se me ocurrió hacerlo por mi cuenta ¿Cómo? lo explicare.

Lo que necesitas es trabaja con una tabla de datos (en MySQL por ejemplo) y tener un campo de tipo datetime. Cuando realices una consulta de esta tabla hazlo de la siguiente forma:

SELECT *, UNIX_TIMESTAMP(campo_fecha) AS fecha_unix FROM mitabla

¿Qué hemos hecho? La consulta SELECT devolverá los datos con un campo adicional llamado fecha_unix, por eso usamos función la UNIX_TIMESTAMP que devuelve la fecha unix (segundos desde 1970-01-01 00:00:00 GMT). 

Ahora veamos la función PHP, la llamaremos hace() que tendrá como parámetro de entrada la fecha en formato Unix:

 function hace($fecha_unix){
//obtener la hora en formato unix
$ahora=time();

//obtener la diferencia de segundos
$segundos=$ahora-$fecha_unix;

//dias es la division de n segs entre 86400 segundos que representa un dia;
$dias=floor($segundos/86400);

//mod_hora es el sobrante, en horas, de la division de días;
$mod_hora=$segundos%86400;

//hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
$horas=floor($mod_hora/3600);

//mod_minuto es el sobrante, en minutos, de la division de horas;
$mod_minuto=$mod_hora%3600;

//minuto es la division entre el sobrante y 60 segundos que representa un minuto;
$minutos=floor($mod_minuto/60);

if($horas<=0){
echo $minutos.' minutos';
}elseif($dias<=0){
echo $horas.' horas '.$minutos.' minutos';
}else{
echo $dias.' dias '.$horas.' horas '.$minutos.' minutos';
}
}

Seguramente hay otras formas de hacer esto, pero esta es mi aportación. Espero que les sirva.