Умные идеи

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 249
Благодарностей
674
Баллы
113
Доброго времени суток, ситуация следующая, работаю в многопотоке с БД, из БД берутся профили и прокси, у них там статус есть free или busy, так вот последнее время участились самопроизвольные перезапуски zennodroid, в итоге прокси и профили остаются в базе в статусе busy, шаблон то не завершил работу. Так вот вопрос, чё такого придумать что бы при вылете ЗД происходили определенные действия (освобождение проксей на пример)? Первое что пришло на ум, это консольную прилку написать которая процесс ЗД мониторит работает он или нет, но у меня такое ощущение что перезапуск происходит настолько быстро что даже процесс не пропадает. Мб кто умных идей насыпет ?)
 

finista

Client
Регистрация
10.10.2012
Сообщения
365
Благодарностей
57
Баллы
28
можно таймер обратного отсчета сделать, как только берет данные сразу таймер (по таймштамп) устаналиваем, если не поступило обратной связи через n-ое количество секунд то ставим статус free, т.е. скрипт постоянно обновлят таймштамп и не дает перейти в статус free
 
  • Спасибо
Реакции: orka13 и Sherminator

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 249
Благодарностей
674
Баллы
113
можно таймер обратного отсчета сделать, как только берет данные сразу таймер (по таймштамп) устаналиваем, если не поступило обратной связи через n-ое количество секунд то ставим статус free, т.е. скрипт постоянно обновлят таймштамп и не дает перейти в статус free
Спасибо, гуд идея, проще просто ещё одно поле в БД добавить типа время во сколько был установлен статус busy и просто в шабе добавить что бы когда он брал прокси, заодно чекал другие прокси и если какая то прокся занята больше 10 минут на пример, ставил ей статус free
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 624
Благодарностей
1 220
Баллы
113
Как вариант, делать "высвобождение" строк, у которых "время в работе" больше определенного числа. Условно, цикл обычно отрабатывает за 10 минут, если busy больше получаса, значит, с вероятностью 99% подвисший. В начале работы делаешь запрос на смену статусов на free всем, у которых прошло больше получаса (время условное, исходишь из своих данных). Соответственно, при начале работы не только меняешь статус на busy, но и в отдельную ячейку записываешь время взятия. При индексе у столбца запрос "высвобождения" выполнится за доли секунды.
ps. Пока писал, именно так и придумал, смотрю )))
 
  • Спасибо
Реакции: Sherminator

sydoow

Client
Регистрация
22.06.2011
Сообщения
289
Благодарностей
149
Баллы
43
Ещё вариант - в таблице сделать поле "дата последнего запуска" и если строка "занята" и "дата последнего запуска" > 2 часов, тогда можно брать такую строку тоже.
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 249
Благодарностей
674
Баллы
113
Ещё вариант - в таблице сделать поле "дата последнего запуска" и если строка "занята" и "дата последнего запуска" > 2 часов, тогда можно брать такую строку тоже.
Уже реализовал похожее, сделал в бд у прокси дополнительную колонку с временем когда был установлен статус busy, ну и шаб периодически проверяет нету ли в БД прокси у которых статус busy был установлен больше 30 минут назад
 

p-sergei

Client
Регистрация
20.12.2016
Сообщения
542
Благодарностей
262
Баллы
63
я просто сделал статическое поле которое которое отслеживает старт работы шаблона, при старте чекаю строки на busy в БД, если таковы имеются это 100 процентов, что Зина упала при работе
117477
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)