sql >> Base de Datos >  >> RDS >> PostgreSQL

Cola en php y postgres

Tal como está escrito, otro trabajador que intenta reclamar el trabajo se bloquearía en la consulta 1. Puede ver la versión anterior de la fila, pero no puede actualizarla, se bloquearía.

Así que no lo hagas en una sola transacción. Reclamar y cometer; Haz el trabajo; luego resuelva y confirme. Cualquier trabajador que venga verá que la fila ya está reclamada. Además, puede ver que está reclamado, lo que lo ayudará a depurar y monitorear.

Cuando reclame la fila, debe marcarla con algo distintivo (un pid, si solo hay una máquina de trabajo, o un nombre de host y pid, si hay varias) en lugar de simplemente 'en curso'. De esa forma, si un trabajador muere, puedes limpiarlo manualmente.