powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запрет одновременного выполнения
8 сообщений из 33, страница 2 из 2
Запрет одновременного выполнения
    #38940910
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453зы я бы не так делал, и начал бы с абсурдности поиска минимального айди.

абсурдности.
1)мы нашли минимальный 10, потенциальная проблема, что другой запрос тоже найдёт минимальный 10, вместо 11 - тогда возникает вопрос, разве не было бы решением если второй искал бы сразу не минимальное а 11. это явно автора устраивает, соответсвенно вопрос - так зачем мы исчём именно минимальное, а не просто любое значение которого нету?

а я бы посмотрела
a) на код где вы находите 11-й отсутствующий ID
б) на код где вы находите произвольный отсутствующий ID
с) давайте предполагать, что автор использовал SMALLINT для ID
=)
...
Рейтинг: 0 / 0
Запрет одновременного выполнения
    #38941224
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabalex564657498765453зы я бы не так делал, и начал бы с абсурдности поиска минимального айди.

абсурдности.
1)мы нашли минимальный 10, потенциальная проблема, что другой запрос тоже найдёт минимальный 10, вместо 11 - тогда возникает вопрос, разве не было бы решением если второй искал бы сразу не минимальное а 11. это явно автора устраивает, соответсвенно вопрос - так зачем мы исчём именно минимальное, а не просто любое значение которого нету?

а я бы посмотрела
a) на код где вы находите 11-й отсутствующий ID
б) на код где вы находите произвольный отсутствующий ID
с) давайте предполагать, что автор использовал SMALLINT для ID
=)

с)и что, религия запрещает перейти на другой тип?
б)как два пальца об асфальт.даже без джоина,...сдесь на форуме уже были даже готовые примеры через переменные
а)вы не поняли мысли.... зачем акцент на минимальном айди, и как пример, второй процес сразу взял себе 11, а первый 10 потом- они искали не минимальный...но суммарный эффект как будто бы минимальный - явно не противоречит ТС, а следовательно - требования а минимальности не обязательное условия для решения задачи. ... это догматично показал на пальцах, что минимальность сдесь не нужна(ну либо ТС плохо описал что у него там проиходит)
...
Рейтинг: 0 / 0
Запрет одновременного выполнения
    #38941295
hated
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О! Оживление =)

В общем, не буду привязываться к цитатам отвечу в общем.
Да скорее всего я и погорячился - может не месяц, может даже не два и не год. Но!!! Это еще хуже, сейчас я знаю об этом узком месте и пытаюсь его оптимизировать, но забей я на это - в один прекрасный момент получаю баг, потери времени на исправление, потере на возмещение убытков простоя и т.д. Сейчас у нас 8 едентичных баз(разные города), кто знает сколько их будет через год-два... И уж тем более потом угадай в какой базе кончатся айдишники... Зачем эта бомба замедленного действия если вполне можно обойтись и без неё?...

Не отрицаю существование способов реализации более правильных и менее косячных и ресурсоемких. Но!!! Эта функция работает с 2011го года и косяки выявились только сейчас(и то редкие и не значительные), по нагрузке/времени работы нареканий нет... По этому смысла менять принцип работы и рисковать появлениями других багов(в случае если что-то забыл/не учел), лично я не вижу...

Итого:
От блокировок решил отказаться - побоялся и сделал как описал выше - перевел в Inno и делаю рекурсию если не произошла вставка.
function newPhonesGroup()
{
$minId = mysql_result(mysql_query("SELECT MIN(NULLIF(R1.groupid + 1, R2.groupid)) as mid FROM (SELECT groupid FROM phonesgroup UNION SELECT 0) R1 LEFT OUTER JOIN phonesgroup R2 ON R2.groupid = (R1.groupid + 1) OR R2.groupid IS NULL"),0,'mid');
if (!$minId || !mysql_query("insert into phonesgroup(groupid,cdate)values($minId,'".date('Y-m-d [H:i:s]')."')"))
{
sleep(1);
return newPhonesGroup();
}
return $minId;
}

Пока косяков не выявлено - как будут - обещаю Вас поставить в известность и быть более внимательным к вашим советам! =)
...
Рейтинг: 0 / 0
Запрет одновременного выполнения
    #38941306
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hatedО! Оживление =)

В общем, не буду привязываться к цитатам отвечу в общем.
Да скорее всего я и погорячился - может не месяц, может даже не два и не год. Но!!! Это еще хуже, сейчас я знаю об этом узком месте и пытаюсь его оптимизировать, но забей я на это - в один прекрасный момент получаю баг, потери времени на исправление, потере на возмещение убытков простоя и т.д. Сейчас у нас 8 едентичных баз(разные города), кто знает сколько их будет через год-два... И уж тем более потом угадай в какой базе кончатся айдишники... Зачем эта бомба замедленного действия если вполне можно обойтись и без неё?...

Не отрицаю существование способов реализации более правильных и менее косячных и ресурсоемких. Но!!! Эта функция работает с 2011го года и косяки выявились только сейчас(и то редкие и не значительные), по нагрузке/времени работы нареканий нет... По этому смысла менять принцип работы и рисковать появлениями других багов(в случае если что-то забыл/не учел), лично я не вижу...

Итого:
От блокировок решил отказаться - побоялся и сделал как описал выше - перевел в Inno и делаю рекурсию если не произошла вставка.
function newPhonesGroup()
{
$minId = mysql_result(mysql_query("SELECT MIN(NULLIF(R1.groupid + 1, R2.groupid)) as mid FROM (SELECT groupid FROM phonesgroup UNION SELECT 0) R1 LEFT OUTER JOIN phonesgroup R2 ON R2.groupid = (R1.groupid + 1) OR R2.groupid IS NULL"),0,'mid');
if (!$minId || !mysql_query("insert into phonesgroup(groupid,cdate)values($minId,'".date('Y-m-d [H:i:s]')."')"))
{
sleep(1);
return newPhonesGroup();
}
return $minId;
}

Пока косяков не выявлено - как будут - обещаю Вас поставить в известность и быть более внимательным к вашим советам! =)

дык что косяков пока не было?! Будут! пышли студент.
...
Рейтинг: 0 / 0
Запрет одновременного выполнения
    #38941401
hated
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453дык что косяков пока не было?! Будут! пышли студент.
Сплюньте! Ну их нафиг... =)
...
Рейтинг: 0 / 0
Запрет одновременного выполнения
    #38941448
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

alex564657498765453 с)и что, религия запрещает перейти на другой тип?


ну, во-первых, в общем-то да, запрещает, особенно если не знаешь, кто, как и для чего еще использует базу
во вторых, с ограничениями интересней, а SMALLINT я просто так предположила, надо же с чего-то начать =)

alex564657498765453 а)вы не поняли мысли.... зачем акцент на минимальном айди, и как пример, второй процес сразу взял себе 11, а первый 10 потом- они искали не минимальный...но


ну может и не поняла, просто минимальный/максимальный найти легче (имхо).
поэтому было бы интересно посмотреть, как можно найти 11-й, 125-й

alex564657498765453 б)как два пальца об асфальт.даже без джоина,...сдесь на форуме уже были даже готовые примеры через переменные

ну вот я и говорю, что было бы интересно посмотреть код. тем более, что для вас это настолько просто
...
Рейтинг: 0 / 0
Запрет одновременного выполнения
    #38941454
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hated,
используй mysqli =)
...
Рейтинг: 0 / 0
Запрет одновременного выполнения
    #38942661
Фотография Karbafos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hatedЗачем эта бомба замедленного действия если вполне можно обойтись и без неё?...
как раз текущая реализация -- бомба. то, что скрипт работает с 2011 года не показатель.
в случае проблем тщательно скрывай свой адрес от тех, кто будет поддерживать систему после тебя.

ты занимаешься хренью, а не оптимизацией, меняй эту кривизну пока не поздно
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запрет одновременного выполнения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]