我有一個PHP腳本運行一個SELECT查詢,然後立即刪除記錄。有多臺機器正在ping同一個php文件並從同一張表中獲取數據。每臺遠程計算機都在cron作業上運行。SELECT然後立即刪除mysql記錄
我的問題是,有時它不能夠快速刪除,因爲一些機器在同一時間ping。
我的問題是,我如何從數據庫中選擇一條記錄,並在下一臺機器抓取它之前將其刪除。現在我只是加了一個短暫的延遲,但效果不好。我嘗試使用交易,但我認爲它不適用於此。
這裏是我的腳本的示例代碼片段:
<?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());
?>
真正體會到了幫助。
它怎麼不適用?聽起來*完全*就像交易是有益的。 – mpen 2012-02-04 01:53:00
您允許使用存儲過程嗎? – dvicino 2012-02-04 01:53:03
@Mark - 交易是否也會阻止SELECT操作?我想知道這可能不是問題。@john - 如果這些由'cron'運行,'die(mysql_error())'有什麼意義?爲什麼不把錯誤記錄到文件或其他東西? – 2012-02-04 01:55:06