Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/68: Рейтинг темы: голосов - 68, средняя оценка - 4.90
283 / 282 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
1

Выполнение скрипта по расписанию

31.10.2013, 10:53. Просмотров 13252. Ответов 8
Метки нет (Все метки)

Добрый день. Помогите решить проблему, необходимо каждый день, вечером, запускать определённый скрипт на сайте. Как это можно реализовать, желательно, чтоб не лезть в консоль, может быть можно как то это реализовать исключительно в рамках Битрикса? Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2013, 10:53
Ответы с готовыми решениями:

Выполнение по расписанию.
Уважаемые, возникла не то, чтобы необходимость, но очень хотелось бы данное действо реализовать. В...

Запуск скрипта по расписанию
Добрый день! Как в Ubuntu Server 12.04 сделать запуск скрипта по расписанию? Вернее даже так:...

Запуск скрипта по расписанию
Люди есть вопрос. Кто может сделать скрипт или что-то в этом роде... Короче мне надо, чтобы на...

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

8
65 / 63 / 10
Регистрация: 16.07.2010
Сообщений: 287
31.10.2013, 12:16 2
sMockingbird, Нашел вот такую статью:
Ryzhonin NikolayОптимизация веб-проектовДобавить в базу знаний
Выполнение всех агентов на cron
Добрый день, уважаемые коллеги!
Вначале немного представлюсь. Меня зовут Рыжонин Николай, в "1С-Битрикс" я курирую направление производительности продуктов компании. Если у вас есть вопросы, предложения или пожелания, касающиеся производительности, обращайтесь e-mail: rns@bitrix.ru

Данная тема уже не раз подымалась (например тут), но тем не менее все таки решил опубликовать обобщенное решения для выполнения всех агентов из под cron.

Для начала полностью отключим выполнение агентов на хите. Для этого выполним следующую команду в php консоли.
PHP
1
2
3
4
5
COption::SetOptionString("main", "agents_use_crontab", "N"); 
echo COption::GetOptionString("main", "agents_use_crontab", "N"); 
 
COption::SetOptionString("main", "check_agents", "N"); 
echo COption::GetOptionString("main", "check_agents", "Y");
В результате выполнения должно быть "NN".
После этого убираем из файла /bitrix/php_interface/dbconn.php определение следующих констант:
PHP
1
2
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
И добавляем
PHP
1
2
if(!(defined("CHK_EVENT") && CHK_EVENT===true))
   define("BX_CRONTAB_SUPPORT", true);


Создаем файл проверки агентов и рассылки системных сообщений /bitrix/php_intarface/cron_events.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
 
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true); 
define('CHK_EVENT', true);
 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
 
@set_time_limit(0);
@ignore_user_abort(true);
 
CAgent::CheckAgents();
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
CEvent::CheckEvents();
?>
И добавляем данный скрипт в cron
*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php

После этого все агенты и отправка системных событий будут обрабатывается из под cron, раз в 5 минут. Чтобы не увеличивалась очередь отправки почтовых сообщений, советую изменить параметр отвечающий за количество почтовых событий обрабатываемых за раз. Для этого выполняем в php консоли следующую команду
PHP
1
2
COption::SetOptionString("main", "mail_event_bulk", "20"); 
echo COption::GetOptionString("main", "mail_event_bulk", "5");
----------------------------------------
Думаю вам поможет
1
283 / 282 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
31.10.2013, 12:25  [ТС] 3
skremet, спасибо, видел это, но вот этот момент меня смутил

Цитата Сообщение от skremet Посмотреть сообщение
И добавляем данный скрипт в cron
*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
Вот тут, я так понял, нужно в консоль лезть, причём не битриксовскую, а на домене. Я правильно понимаю?
0
65 / 63 / 10
Регистрация: 16.07.2010
Сообщений: 287
31.10.2013, 12:45 4
sMockingbird, Думаю что это надо сделать именно в битриксе
http://(ваш домен)bitrix/admin/php_command_line.php?lang=ru
1
283 / 282 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
31.10.2013, 13:05  [ТС] 5
skremet, wow, спасибо
0
384 / 368 / 92
Регистрация: 15.02.2012
Сообщений: 1,504
31.10.2013, 16:15 6
*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
вообще-то это не в битриксе нужно запускать, а на сервере в расписании cron прописать
*/5 * * * * - это время и день недели
дальше пути
но где и что тут сразу скажу - я не в помощь, не знаю
0
283 / 282 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
31.10.2013, 16:17  [ТС] 7
tgarl, блин. Т.е. в итоге мне всё равно придётся за пределами битрикса что то делать?
Ещё не разбирался просто, на завтра отложил
0
384 / 368 / 92
Регистрация: 15.02.2012
Сообщений: 1,504
31.10.2013, 18:14 8
можно заменить срон на агента(вот он в битриксе), но беда агента заключается в том, что если в указанное время никто на сайт не зашел(агент запускается по хиту - открытию любой страницы сайта), то он не выполнится
т.е. ставите на 19:00, а первый посетитель через 2 дня пришел - вот через 2 дня и запустится ваш скрипт, ну и конечно же этому посетителю если скрипт тяжелый не повезет - страница будет открываться доолго
0
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 25
11.06.2018, 14:21 9
Подскажите пожалуйста где находится crontab
чтобы добавить данный скрипт

*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php


по какому пути нужно добавить скрипт в cron? где находится cron на битриксе
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2018, 14:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выполнение задачи по расписанию
Добрый день! Имеется скрипт который выполняет определенную функцию по расписанию. В данный...

Выполнение кода по расписанию
Подскажите пожалуйста, как реализовать такие задержки, к примеру я хочу чтобы определенный метод...

Выполнение действие по расписанию
Есть некая программа, которая должна выполнятся 24/7. Мне нужно выполнить некое действие(допустим...

Выполнение php скрипта по заданию cron и .htaccess каталога скрипта
Гуру, направьте как?: Есть php скрипт, который раз в неделю должен делать рассылку по базе мэйлов....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.