За последние 24 часа нас посетили 18800 программистов и 1652 робота. Сейчас ищут 939 программистов ...

проблема с дублированием

Тема в разделе "PHP и базы данных", создана пользователем DelphiWorld, 20 июн 2011.

  1. DelphiWorld

    DelphiWorld Активный пользователь

    С нами с:
    19 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    Из-за высоких нагрузок и возможности вызвать несколькими пользователями одну функцию (пример: создается массив из записи бд, далее по истечению времени и нажатию на кнопку срабатывает обработчик, в конце удаляет из БД эту запись).

    Конкретно проблема: проходят 2 INSERT (иногда), т.е. если паралельно погнали 2 функции в обеих находят ту запись из БД. Перевел на InnoDB , запустил в последних запросах строгую транзакцию (SET TRANSACTION ISOLATION LEVEL SERIALIZABLE) вылазить начало реже. Какие варианты решения проблемы? Т.к. по коду есть еще такие вот "подводные камни", которые уже пол года исправить не могу ))))

    Еще немного инфы:

    PHP:
    1.  
    2. class 1
    3. $t1 = mysql_fetch_array(mysql_query('SELECT * FROM `table` WHERE `id`="'.$id.'"'));
    4.  
    5. class2 extends class 1
    6. if(isset($c1->t1['id']))
    7. {
    8.   ...
    9.   mysql_query('UPDATE ...');
    10.   mysql_query('INSERT...');
    11.   mysql_query('DELETE FROM `table` WHERE `id`="'.$c1->t1['id'].'"');
    12. }
    13.  
    вот на примере, как-то так )