Debe implementar un campo LOCKDATE y LOCKWHO en su tabla. Lo he hecho en muchas aplicaciones fuera de PHP/Mysql y siempre es igual.
El bloqueo finaliza cuando ha pasado el TTL, por lo que podría hacer una resta de fechas usando NOW y LOCKDATE para ver si el objeto ha estado bloqueado durante más de 30 minutos o 1 hora, como desee.
Otro factor es considerar si el usuario actual es el que bloquea el objeto. Por eso también necesitas un LOCKWHO. Puede ser un user_id de su base de datos, un session_id de PHP. Pero manténgalo en algo que identifique a un usuario, una dirección IP no es una buena forma de hacerlo.
Por último, piense siempre en una función de desbloqueo masivo que simplemente restablezca todos los LOCKDATE y LOCKWHO...
Saludos