[spoiler]
И это правильно. Зачем посетителя сайта томить ожиданием окончания очистки таблиц статистики или пересчета форумов?
Если есть возможность выполнять периодические задания на cron'е будем делать так!
Во-первых идем на страницу /bitrix/admin/php_command_line.php?lang=ru и исполняем следующий код:
COption::SetOptionString("main", "agents_use_crontab", "Y"); echo COption::GetOptionString("main", "agents_use_crontab", "N"); |
Увидели "Y". С этой секунды на хитах будут исполняться
Во-вторых идем на страницу /bitrix/admin/agent_list.php?lang=ru и настраиваем показ колонки "Периодический" (для контроля).
И те агенты которые считаем нужным редактируем, выставляя галочку "Периодический:".
В-третьих в крон добавляем на выполнение команду:
/usr/bin/php -f /var/www/bitrix/modules/main/tools/cron_events.php |
Периодичность выставляем по вкусу. Мне нравится "*/10 * * * *" - что означает раз в десять минут.
Если set_time_limit разрешен, то...
На кол. памяти, время выполнения, периодичность запуска и т.д.
Так что "Периодичность выставляем по вкусу. Мне нравится "*/10 * * * *" - что означает раз в десять минут." может и не получиться
Но информации там для запуска именно агентов нету.
И те агенты которые считаем нужным редактируем, выставляя галочку "Периодический:".
Код
/usr/bin/php -f /var/www/bitrix/modules/main/tools/cron_events.php
Периодичность выставляем по вкусу. Мне нравится "*/10 * * * *" - что означает раз в десять минут.
А где в крон добавляется команда на выполнение? Здесь же /bitrix/admin/php_command_line.php?lang=ru, или в другом месте подскажите где, а то я 0 в этом вопросе
И еще вопрос периодичность где выставляется в файле /var/www/bitrix/modules/main/tools/cron_events.php или в другом каком месте?
В рассылках стало генерироваться 2 одинаковых выпуска. Как эти настройки можно вернуть обратно?
Используем модуль "Почта", хотелось бы проверять почту на ящике раз в 1 минуту. Модуль создает непериодического агента, поэтому соединения к почтовому серверу будут происходить на хитах пользователей. Не хочется увеличивать время загрузки страниц.
Если же сделать агента периодическим, он станет выполняться по cron. Но если сервер с сайтом (или почтовый сервер) вдруг упадет, скажем, на два часа, то при восстановлении работы этот периодичный агент будет выполняться 120 раз (по разу за каждую минуту простоя).
Что можно предпринять в данном случае?
Сперва выполняем PHP-код с помощью /bitrix/admin/php_command_line.php?lang=ru
Должно вывестись YN
Далее создаем файл /bitrix/php_interface/cron_events.php со следующим кодом:
Добавляем в крон две строки:
Одна строчка запускает все периодические агенты, другая все непериодические. Различие как раз в этой константе BX_CRONTAB.
Подробнее можно посмотреть, изучив файл /bitrix/modules/main/classes/mysql/agent.php (метод CheckAgents).
Добавляем в крон две строки:
Код
*/10 * * * * /usr/bin/php -f /var/www/bitrix/php_interface/cron_events.php BX_CRONTAB=1
*/10 * * * * /usr/bin/php -f /var/www/bitrix/php_interface/cron_events.php
спасибо, все работает
short_open_tag = On
В файле /etc/php5/cli/php.ini
У меня оказывается было Off от этого не запускались агенты.
Если оставляю все на агентах (чтобы хоть как-то работало) - выпуск генерируется, но остается в статусе "[P] В процессе" и не отсылается. Почему - не могу понять.
Два вопроса: почему не отсылается выпуск при настройке "на агентах" и как настроить все "на кроне" в случае с виндой.
Спасибо.
Спасибо.
У меня вопрос, почему здесь Максим предлагает способ вешать только непериодические на крон. А периодические зачем на хитах оставлять? Может быть был какой-нибудь древний глюк с периодическими агентами на кроне. Или еще какой смысл?
-bash: */10: No such file or directory
Запустил скрипт через wget, все заработало.
Можете выложить пример с wgetом