208 похожих чатов

Ребят, всем привет! Есть у кого идеи, почему так может быть? У

меня есть агенты, которые запускают экспорт на торговые площадки. Условно-есть модуль, у которого есть 5 профилей, каждый из которых запускается через определенный интервал.
На серваке работает крон, работает раз в минуту.
Обращается к файлу cron_events.php, внутри которого-
CAgent::CheckAgents();
CEvent::CheckEvents();

ВНАЧАЛЕ файла я ставлю лог-типо старт , в конце файла-Стоп.
В файле модуля, который делает выгрузку-я поставил лог по шагам-на каждый шаг выгрузки-у меня идет логгирование.
И в чем прикол-в теории как должно быть-в логе должен идти
START
--STEP_EXPORT профиля, или нескольких профилей ( если одновременно отрабатывают)
STOP

НО-в логах я иногда ловлю START 2 раза подряд, потом идет STOP, и после стопа-идет лог шага выгрузки, и после него-снова STOP.

Как будто бы у меня отработал крон, пошло обращение к файлу, но в моменте проверки и исполнения агентов-он не успевает это сделать за минуту, и только через пару минут-он 'развисает', и выполняется.

Проблема в том-что выгрузка пошаговая, и периодически-у меня некоторые шаги повторяются по 2 раза, и в файлах выгрузки идут дубли

9 ответов

33 просмотра

Самое простое - сделать периодичность агента раз в 5 минут, а не раз в минуту) Посложнее - сделать какой-то флаг, запущен ли агент и проверять его на старте. Если запущен, выходить из метода, если нет - продолжать. Если выгрузка пакетная, то скрипт где-то сохраняет инфу, сколько он выгрузил и сколько осталось, так ведь? Можно посмотреть, как это работает и как раз использовать для проверки, что выгрузка ещё не завершена.

Dim-Dim Автор вопроса
Alexey Nazarov
Самое простое - сделать периодичность агента раз в...

в том то и дело, что это вроде как все реализовано. У нас висит агент check, у которого период-это период в профиле выгрузки. Как только время наступает-он запускает exec, в который передает id профиля и id шага, и шаг выполняется-а внутри шага идет генерация и запись в файл, после шага-если шаг НЕ последний-то ретёрнится снова агент exec, в котором тот же id профиля и шаг+1

Dim-Dim Автор вопроса
Alexey Nazarov
Самое простое - сделать периодичность агента раз в...

крон раз в минуту выполняется, не сам агент. Т.е в теории-да, возможна ситуация.-когда шаг выгрузки может длиться 5 минут, и эти 5 минут-крон будет обращаться к файлу с check агентами, ииии... а что тогда? У него же флаг выполнения стоит в этот момент ( у агента )-он просто пропускается, пока не закончится

Я бы сделал отдельный файл который запускал по крону потому что выгрузка на площадки в некоторых случаях может длится до часа, агенты могут отваливаться или что может работать нестабильно.

Dim-Dim Автор вопроса
Александр Лырмин
Я бы сделал отдельный файл который запускал по кро...

вероятно, если не разберусь в причине-так и сделаю, поставлю хотя бы раз в 10 минут-чтоб наверняка

Dim Dim
вероятно, если не разберусь в причине-так и сделаю...

Зачем так часто грузить информацию на площадки?

Dim-Dim Автор вопроса
Александр Лырмин
Зачем так часто грузить информацию на площадки?

вы меня не так поняли-именно крон запускается раз в минуту, все агенты переведены на крон. Сам агент выгрузки на площадки-раз в 8 часов должен запускаться

Dim Dim
вы меня не так поняли-именно крон запускается раз ...

Время запуска стандартного файла крона не нужно увеличивать. Я написал про отдельный файл.

Dim-Dim Автор вопроса
Александр Лырмин
Время запуска стандартного файла крона не нужно ув...

я понял, в стандартном-убрать проверку и выполнение агентов мого модуля, сделать отдельный файл крона-где будут выполняться только они, и на него-уже раз в 10 минут поставить

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта