Silentland
Новичок
На сервер аяксом посылается команда создания новой записи. При получении ответа с id-шником созданной записи сразу же посылается команда на удаление этой записи. Назад возвращается список оставшихся записей (для проверки):
Команды на добавление (и последующее удаление) поступают практически одновременно. В итоге получаем такой ответ:
иногда так
Вроде все верно, но если посмотреть в БД, окажется, что записи 2508, 2509 восстановились! Т.е. фактически всегда удаляется только одна запись. Движок базы MyISAM. Что может быть? Глюк mySQL?
Пробовал вставлять в JS функции добавления/удаления рандомные синхронные задержки (забивают на время работу скрипта). Не помогает. Так же пробовал ставить mysqli_commit($link); и до и после функции удаления. Так же безрезультатно.
PHP:
// Удаляем
mysql_query("delete from `table` where `id` = '" . intval($id) . "'");
//Проверяем
$res = mysql_query("select `id` from `table`" );
$test = array();
while ($row = mysql_fetch_assoc($res)) {
$test[] = $row['id'];
}
file_put_contents('log.txt', 'удаляем '.$id.', остается '.implode (', ', $test).' ('.mysql_affected_rows().')'.PHP_EOL, FILE_APPEND);
PHP:
удаляем 2507, остается 2508, 2509 (2)
удаляем 2508, остается 2509 (1)
удаляем 2509, остается (0)
PHP:
удаляем 2498, остается 2499, 2500 (2)
удаляем 2499, остается 2500 (1)
удаляем 2500, остается 2499, 2500 (2)
Пробовал вставлять в JS функции добавления/удаления рандомные синхронные задержки (забивают на время работу скрипта). Не помогает. Так же пробовал ставить mysqli_commit($link); и до и после функции удаления. Так же безрезультатно.