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

Т.К. при выполнении скрипта на кроне нет объекта $USER и

его метода $USER->GetId.
Хочу создать этот метод на событии OnBeforeProlog. Чтобы $USER->GetId начал выдавать заранее созданного мной пользователя "крон".

Какие есть подводные камни такого решения?

Изначально необходимость в этом возникла, т.к. в Б24 активити "пауза" продолжает выполнение бизнес процесса уже через крон, поэтому бизнесс процесс крашится при использовании $USER->GetId

15 ответов

26 просмотров

инициализировать CUser и авторизовать его с пользователем "крон" или сразу использовать айдишник юзера крон

mike- Автор вопроса
Артём Листиков
инициализировать CUser и авторизовать его с пользо...

Думаю проверять наличие метода $USER->GetId. И просто создавать свой метод, который будет возвращать нучное число. Объект CUSER создавать не буду

mike
Думаю проверять наличие метода $USER->GetId. И про...

$USER в принципе на этот момент не существует, поэтому в коде получается обращение к строке "$USER"

mike- Автор вопроса
Артём Листиков
$USER в принципе на этот момент не существует, поэ...

В итоге сделал так, буду тестировать (файл init.php).

mike
screenshot В итоге сделал так, буду тестировать (файл init.ph...

Потом когда в колено прилетит использование глобального объекта $USER не наследуемого от CUser, можешь вспомнишь что сделал не так

mike- Автор вопроса
Артём Листиков
Потом когда в колено прилетит использование глобал...

Например? Я потому в чат и написал, что хотел услышать мнение со стороны

mike
Например? Я потому в чат и написал, что хотел услы...

Я предложил вариант сразу использовать айдишник конкретного пользователя. Вместо конструкции получения айдишника от $USER. Это будет нормально работать при условии если в дальнейшем к объекту пользователя не происходит обращений. Если уж происходит дальнейшая работа с объектом, то и сделай чтоб в объекте был требуемый пользователь со всеми параметрами - авторизуйся под ним.

mike- Автор вопроса
Артём Листиков
Я предложил вариант сразу использовать айдишник ко...

Дело в том что на сколько я могу судить, при запуске через крон $USER это всегда строка. Даже возникающая ошибка пишет: не могу вызвать GetID от строки

mike
screenshot Дело в том что на сколько я могу судить, при запус...

Если не объявлен глобально объект $USER, а пытаешься что то с ним делать, то пхп на обращение к неопределенной ранее глобальной переменной вернёт строку. Следовательно и получается такая ошибка. GetID вызывается из локального кода. Если в нем нужен текущий пользователь - авторизуй по условию крона. Если всегда крон - вставляй айдишник вместо $USER->GetID()

mike- Автор вопроса
Артём Листиков
Если не объявлен глобально объект $USER, а пытаешь...

До выполнения моего кода переменная $USER уже определена. Имеет тип строку и содержит имя пользователя linux из под которого выполняется cron_events.php Впрочем возможно я не до конца понимаю что ты имеешь ввиду

mike
До выполнения моего кода переменная $USER уже опре...

А должен быть либо объектом класса CUser, либо его наследником

mike- Автор вопроса
mike
screenshot Ну так из коробки там строка =)

Это в ваших кронах, а битрикс и соответственно используемый код требует стандартного наличия в $USER объекта определенного класса

mike- Автор вопроса
Артём Листиков
Это в ваших кронах, а битрикс и соответственно исп...

То понятно. Речь то только про крон. Понятно что для обычных сессиях такое переоределение все поломает

mike
То понятно. Речь то только про крон. Понятно что д...

Я знать не знаю что там дальше творится после $USER->GetID(). Но если оно ожидает CUser, то предоставь его.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
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...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта