adios 3 Опубликовано: 14 августа 2018 Рассказать Опубликовано: 14 августа 2018 Здравствуйте. Возникла ситуация, в которой, к примеру, новость А была добавлена в 18:35:01 и получила id 999, а новость Б добавлена в 18:35:20 и имеет id 998. Подскажите, id присваивается в момент отправки/добавления новости или как-то иначе? Цитата Ссылка на сообщение Поделиться на других сайтах
webair 178 Опубликовано: 14 августа 2018 Рассказать Опубликовано: 14 августа 2018 25 минут назад, adios сказал: Здравствуйте. Возникла ситуация, в которой, к примеру, новость А была добавлена в 18:35:01 и получила id 999, а новость Б добавлена в 18:35:20 и имеет id 998. Подскажите, id присваивается в момент отправки/добавления новости или как-то иначе? // Отрывок из engine/inc/addnews.php // Генерация даты if( $newdate ) { if( (($newsdate = strtotime( $newdate )) === - 1) OR !$newsdate ) { msg( "error", array('javascript:history.go(-1)' => $lang['addnews'], '' => $lang['addnews_error'] ), $lang['addnews_erdate'], "javascript:history.go(-1)" ); } else { $thistime = date( "Y-m-d H:i:s", $newsdate ); } if( ! intval( $config['no_date'] ) and $newsdate > $added_time ) { $thistime = date( "Y-m-d H:i:s", $added_time ); } } else $thistime = date( "Y-m-d H:i:s", $added_time ); // Добавление в БД $db->query( "INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags, metatitle) values ('$thistime', '{$author}', '$short_story', '$full_story', '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_br', '$catalog_url', '{$_POST['tags']}', '{$metatags['title']}')" ); $id = $db->insert_id(); $db->query( "INSERT INTO " . PREFIX . "_post_extras (news_id, allow_rate, votes, disable_index, access, user_id, disable_search, need_pass) VALUES('{$id}', '{$allow_rating}', '{$add_vote}', '{$disable_index}', '{$group_regel}', '{$userid}', '{$disable_search}', '{$need_pass}')" ); Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 14 августа 2018 Рассказать Опубликовано: 14 августа 2018 36 минут назад, adios сказал: Здравствуйте. Возникла ситуация, в которой, к примеру, новость А была добавлена в 18:35:01 и получила id 999, а новость Б добавлена в 18:35:20 и имеет id 998. Подскажите, id присваивается в момент отправки/добавления новости или как-то иначе? DLE id не назначает вообще, их присваевает MySQL сервер автоматически в момент добавления информации в БД. А дата может быть установлена у самой публикации при добавлении в админпанели, и может быть какой угодно, а не только той, что в момент добавления. Цитата Ссылка на сообщение Поделиться на других сайтах
adios 3 Опубликовано: 14 августа 2018 Рассказать Опубликовано: 14 августа 2018 (изменено) Автор 2 часа назад, celsoft сказал: DLE id не назначает вообще, их присваевает MySQL сервер автоматически в момент добавления информации в БД. А дата может быть установлена у самой публикации при добавлении в админпанели, и может быть какой угодно, а не только той, что в момент добавления. Я понимаю, что идентификатор присваивает mysql. Если не учитывать "ручное" изменение даты, какие еще могут быть варианты? Изменено 14 августа 2018 пользователем adios Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 14 августа 2018 Рассказать Опубликовано: 14 августа 2018 10 часов назад, adios сказал: Если не учитывать "ручное" изменение даты, какие еще могут быть варианты? Новость поступила в БД позднее, тут нет вариантов. Где она была, сложно сказать. Может быть в очереди на выполнение на MySQL сервере, может быть первая транкзация не выполнилась и была перезапущена MySQL сервером. Может быть у вас БД в кластере, и синхронизация так произошла и т.д. и т.п. Много вариантов на самом деле. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.