Hola,
¿qué te parece esto?
Código PHP:
$ahora = getdate(); //hora actual
$publicacion = ""; //hora de publicacion, sacada de un SELECT; se asume que tiene el formato H:i:s
//dividir la cadena guardada en sus componentes (hora,minuto,segundo) reciclando la variable
$publicacion = explode(":",$publicacion);
if(($hora = $ahora["hours"]-$publicacion[0]) > 0) echo "hace {$hora} horas";
elseif(($min = $ahora["minutes"]-$publicacion[1]) > 0) echo "hace {$min} minutos";
elseif(($sec = $ahora["seconds"]-$publicacion[2]) > 0) echo "hace {$sec} segundos";
En vez de explotar la cadena, podrías hacer una estampa de tiempo para usar de nuevo getdate; incluso podrías guardar el valor en la base de datos como estampa. Explora tus opciones
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
.
saludos