Tengo un script PHP que ejecuta una consulta SELECT y luego borra inmediatamente el registro. Hay varias máquinas que hacen ping al mismo archivo php y obtienen datos de la misma tabla. Cada máquina remota se ejecuta en un trabajo cron.SELECCIONAR luego inmediatamente ELIMINAR registro mysql
Mi problema es que a veces no se puede eliminar lo suficientemente rápido ya que algunas de las máquinas hacen ping al mismo tiempo.
Mi pregunta es, ¿cómo puedo SELECCIONAR un registro de una base de datos y eliminarlo antes de que la siguiente máquina lo agarre? Por ahora acabo de agregar un pequeño retraso, pero no está funcionando muy bien. Intenté usar una transacción, pero no creo que se aplique aquí.
He aquí un fragmento de ejemplo de mi guión:
<?php
$query = "SELECT * FROM `queue` LIMIT 1";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$email = $row['email'];
$campaign_id = $row['campaign'];
}
$queryx = "DELETE FROM `queue` WHERE `email` = '".$email."'";
$resultx = mysql_query($queryx) or die(mysql_error());
?>
apreciar realmente la ayuda.
¿cómo no se aplica? eso suena * exactamente * como para lo que una transacción es buena. – mpen
¿Se le permite usar procedimientos almacenados? – dvicino
@Mark - ¿Las transacciones también evitan que 'SELECT's funcione? Me pregunto si este no es el [email protected] - Si estos son ejecutados por 'cron', ¿cuál es el punto de' die (mysql_error()) '? ¿Por qué no registrar el error en un archivo o algo así? –