Настройка cron-задачи
Что это такое: небольшое «сердцебиение», которое вы настраиваете один раз, чтобы TSync мог сам выполнять задачи по расписанию — даже когда никто не вошёл в систему. Представьте, что вы заводите часы: как только они начинают тикать, TSync тихо берёт на себя рутинную работу в фоне каждую минуту.
Почему это важно: без этого «сердцебиения» несколько удобных функций просто никогда не сработают. Если напоминания не отправляются, а повторяющиеся счета не появляются — почти всегда причина именно в этом.
Вот что перестаёт работать, когда «сердцебиение» отсутствует:
- Повторяющиеся счета не создаются автоматически
- Напоминания (о просроченном счёте, о задаче со сроком, об истекающем договоре) не отправляются
- Импорт лидов из почты не подхватывает новые письма
- Автоматическое резервное копирование не запускается
- Уведомления о подписках по почте не уходят
Поэтому настройка этого — обязательный шаг для полноценно работающей системы. Хорошая новость: вы делаете это один раз и потом забываете.
Единственная команда, которую нужно выполнять TSync
Это инструкция, которую ваш сервер будет запускать по таймеру. Она говорит серверу «запусти фоновый скрипт TSync»:
php -q /full/path/to/tsyncerp/pipe.php cron
Чтобы заполнить пропуски, вам понадобится узнать настоящее расположение двух вещей:
- Где установлен TSync — замените
/full/path/to/tsyncerp/на вашу реальную папку. - Где находится PHP — большинство серверов понимают просто
php, но для надёжности используйте полный путь. Эта маленькая команда покажет его:
which php # обычно выводит что-то вроде /usr/bin/php
which php8.1 # на некоторых серверах он назван с версией
Как часто? Идеально — раз в минуту: так напоминания и счета появляются практически мгновенно.
Выберите ниже раздел, который подходит вашему хостингу. Нужен только один.
На Linux (cPanel, Plesk или собственный сервер)
Простой способ (панель cPanel)
Если хостинг даёт вам cPanel — это самый лёгкий путь, никаких команд набирать не нужно:
- В cPanel откройте Cron Jobs (в разделе «Дополнительно» / Advanced).
- В блоке Common Settings выберите Once per minute (* * * * *) (раз в минуту).
- В поле Command вставьте (со своим реальным путём):
/usr/bin/php -q /home/USERNAME/public_html/pipe.php cron - Нажмите Add New Cron Job. Готово.
Способ для Plesk
- В Plesk откройте свой сайт и перейдите в Запланированные задачи (Scheduled Tasks).
- Нажмите Add Task → Run a command.
- В поле Command введите (со своим реальным путём):
php /var/www/vhosts/your-domain/httpdocs/pipe.php cron - Задайте Run в формате Cron как
* * * * *(это код для «каждую минуту»). - Нажмите OK.
Способ через командную строку (с помощью crontab)
Если вам комфортно подключаться к серверу по SSH, это сработает на любой Linux-машине. Откройте свой личный список запланированных задач:
crontab -e
Добавьте эту единственную строку — она означает «каждую минуту тихо запускать фоновый скрипт TSync»:
* * * * * /usr/bin/php -q /var/www/tsyncerp/pipe.php cron > /dev/null 2>&1
(Часть > /dev/null 2>&1 нужна лишь для того, чтобы сервер не присылал вам письмо с выводом каждую минуту.)
Сохраните и выйдите. Если ваш редактор — vim, наберите :wq; если nano — нажмите Ctrl+O, Enter, затем Ctrl+X.
Чтобы перепроверить, что строка сохранилась:
crontab -l # выводит список ваших запланированных задач
На Windows Server (Планировщик заданий)
В Windows есть встроенный инструмент Планировщик заданий (Task Scheduler) для задач по расписанию:
- Откройте Планировщик заданий.
- Выберите Создать простую задачу и назовите её, например, «TSync cron».
- В качестве триггера выберите
Ежедневно, затем настройте повтор каждую1 минуту, бессрочно. - В качестве действия выберите Запустить программу и заполните:
- Программа:
C:\php\php.exe(там, где у вас установлен PHP) - Аргументы:
-q "C:\inetpub\wwwroot\tsyncerp\pipe.php" cron - Рабочая папка (Start in):
C:\inetpub\wwwroot\tsyncerp\
- Программа:
- Нажмите «Готово».
Нет доступа к командной строке? Используйте веб-таймер
Если ваш хостинг не даёт SSH, но предлагает «HTTP cron» (таймер, который заходит на веб-адрес), вы можете направить его на cron-адрес TSync:
* * * * * wget -q -O /dev/null "https://your-domain.com/cron"
Небольшое предупреждение: этот вариант немного менее приватный, потому что любой, кто знает этот веб-адрес, может запустить задачу извне. Если есть выбор, способы с командной строкой выше — более безопасный вариант.
Проверьте, что всё действительно работает
Три простых способа убедиться, что «сердцебиение» тикает:
1. Запустите вручную один раз
Это запустит фоновый скрипт ровно один раз, прямо сейчас, чтобы вы увидели, всё ли в порядке:
php /var/www/tsyncerp/pipe.php cron
Нет ошибок — значит всё хорошо. Если же вы увидели сообщение, вот что оно означает простыми словами:
Could not open input file→ путь к папке в команде неверный — перепроверьте его.No such fileдля подключаемых файлов → проблема с правами доступа к папке блокирует доступ.Database error→ скрипт не может достучаться до базы данных из командной строки (встречается редко).
2. Загляните в сам TSync
Перейдите в Настройки → Settings → System/Server Info. Там показано время, когда cron запускался в последний раз. Если это было менее 5 минут назад — ваше «сердцебиение» здорово.
3. Загляните в журнал cron сервера (необязательно)
Если хотите получить подтверждение, что сервер запускает задачу:
# На Linux:
grep CRON /var/log/syslog | tail -20
Если что-то идёт не так
Вообще ничего не запускается
- Выполните
crontab -l— строка действительно на месте? - Используйте полный путь к PHP (
/usr/bin/php), а не простоphp. На этом спотыкаются многие. - Убедитесь, что у учётной записи, запускающей задачу, есть право запускать PHP.
Запускается, но ничего не происходит
- Убедитесь, что база данных доступна из командной строки.
- Проверьте время «последнего запуска cron» в разделе Настройки → Settings — обновляется ли оно.
Сообщение «Memory exhausted»
Задаче не хватило рабочей памяти. Дайте ей больше простора в файле php.ini:
memory_limit = 512M
(Учтите: командная строка иногда использует другой php.ini, нежели ваш сайт — убедитесь, что у обоих стоит щедрый лимит.)
Письма по-прежнему не отправляются, хотя cron работает
Это указывает на настройку почты, а не на cron:
- Проверьте в Настройки → Settings → Email, что данные исходящей почты (SMTP) заполнены.
- Отправьте тестовое письмо с того же экрана.
Более редкое расписание (только если хостинг вынуждает)
Некоторые бюджетные хостинги не дают запускать задачу каждую минуту. Тогда можно запускать её каждые 5 минут — напоминания и счета будут появляться лишь чуть менее мгновенно:
*/5 * * * * /usr/bin/php /var/www/tsyncerp/pipe.php cron > /dev/null 2>&1
Для большинства установок раз в минуту — более комфортный вариант.