$mysqli->autocommit(FALSE);
$mysqli->query("BEGIN;");
$mysqli->multi_query("SELECT id FROM links WHERE id > (SELECT value FROM meta WHERE name='scan' FOR UPDATE) LIMIT 1000;UPDATE meta SET value=value+1000 WHERE name='scan';");
$mysqli->commit();
Đó là một vấn đề phức tạp; khóa và cấp độ giao dịch, nhưng điều kỳ diệu ở trên là BEGIN
bản tường trình. Không có nó, mỗi câu lệnh đang chạy ở cấp độ giao dịch riêng của nó và FOR UPDATE
khóa đã được mở quá sớm.