Да, такое возможно, если падение процесса совпало с рестартом машины. Можно
добавить в ключ время запуска процесса (просто вызвав time() при запуске и
сохранив его где-нибудь).

В других случаях pid будет назначен иной с очень большой вероятностью (PID
генерируются функцией get_pid, которая возвращает еще не используемый PID.
В качестве начального эта функция использует last_pid  — последний
выделенный PID).

6 августа 2012 г., 14:07 пользователь Alexandr Alexeev
<[email protected]>написал:

> >> SELECT ... FOR UPDATE;
>
> Это очень похоже на то, что мне нужно
>
> >> В MySQL есть GET_LOCK(name), RELEASE_LOCK(name) которые не привязаны к
> таблице, и удаляются при потере соединения.
>
> А насколько это переносимо под другие РСУБД?
>
> >> Все воркеры запускаются под супервизором (runit), и при старте он
> проверяет очередь на задачи, маркированные тем же ip, но другим pid, и
> снимает с них пометку.
>
> А если при следующем запуске процесс получит тот же pid?
>
> 6 августа 2012 г., 13:54 пользователь Akzhan Abdulin
> <[email protected]> написал:
> > Ну это лечилось тривиально.
> >
> > Все воркеры запускаются под супервизором (runit), и при старте он
> проверяет
> > очередь на задачи, маркированные тем же ip, но другим pid, и снимает с
> них
> > пометку.
> >
> > 6 августа 2012 г., 13:42 пользователь Sergey Leschenko <
> [email protected]>
> > написал:
> >
> >> > Сначала делал UPDATE таблицы, а потом выбирал нужные записи.
> >>
> >> Минус этого варианта в том, что если worker умрет, надо вернуть задачи
> >> обратно в очередь.
> >>
> >> В MySQL есть GET_LOCK(name), RELEASE_LOCK(name) которые не привязаны к
> >> таблице, и удаляются при потере соединения.
> >> Читаем задачу, формируем имя лока, пробуем залочить - получилось -
> >> выполняем, не получилось - переходим к следующей задаче.
> >>
> >> --
> >> Sergey
> >> --
> >> Moscow.pm mailing list
> >> [email protected] | http://moscow.pm.org
> >
> >
> >
> > --
> > Moscow.pm mailing list
> > [email protected] | http://moscow.pm.org
> >
>
>
>
> --
> С уважением, Александр
> Личный блог: http://eax.me/
> Мой форум: http://it-talk.org/
> Мой Twitter: http://twitter.com/afiskon
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить