С некоторых пор настоятельно рекомендую переводить выполнение всех агентов на крон. И почты тожею Я ставлю запуск раз в минуту, ничем не отличается практически от выполнения на хите. Чтобы не грузить сервер ежеминутным кроном, я снял впску с кроном за пару сотен рублей, и вешаю туда все wget'ы Но пост о другом. [spoiler] Итак, при такой схеме иногда требуется мгновенное выполнение агента, то есть, в конце данного хита, или, максимум. на следующем. Решается эта проблема так:
public static function OnEpilogHandler() {
if (isset($_SESSION['START_AGENT']) && !empty($_SESSION['START_AGENT'])) {
foreach ($_SESSION['START_AGENT'] as $ID) {
CAgent::ExecuteAgents('AND ID='.intval($ID));
}
unset($_SESSION['START_AGENT']);
}
}
4. Далее нам надо обработать ситуацию с LocalRedirect (единственная (за исключением die) ситуация, которая не позволяет дойти до OnEpilog на текущем хите. Собственно, код тот же самый:
public static function OnLocalRedirectHandler() {
if (isset($_SESSION['START_AGENT']) && !empty($_SESSION['START_AGENT'])) {
foreach ($_SESSION['START_AGENT'] as $ID) {
CAgent::ExecuteAgents('AND ID='.intval($ID));
}
unset($_SESSION['START_AGENT']);
}
}
Denis, да. Ты видишь минус в том, что на некоем агенте процесс апача подвиснет, ожидая PHP? Это минус, но такие тяжелые агенты минимальны. Фактически, таким wget'ом мы эмулируем выполнение агентов на хите.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».