Създаване на cronjob или задача (и какво да направите, ако не се изпълнява)
С cronjob (в DirectAdmin: Cron Jobs) можете да стартирате скрипт автоматично в определени часове, например всяка нощ. По-долу ще прочетете как да създадете такава задача и какво да направите, ако тя не работи.
Правила за cronjob задачи
- Стартирайте задача най-много веднъж на 10 минути. Изискваме това от всички, защото споделяте сървъра с други уебсайтове.
- Разпределете няколко cronjob задачи във времето и изберете спокоен час, например 03:17 вместо точно полунощ.
- Тежки cronjob задачи, които натоварват сървъра продължително, не са разрешени. На същия сървър работят и други уебсайтове. При необходимост ще спрем дадена cronjob задача. Затова поддържайте задачите си кратки и не ги стартирайте по-често от необходимото.
Създаване на cronjob
- Влезте в DirectAdmin и под Advanced Features кликнете върху Cron Jobs.
- Кликнете върху Create Cron Job.
- Попълнете минутата, часа, деня, месеца и деня от седмицата. Никога не поставяйте само звездичка за минутата, иначе задачата ще се изпълнява всяка минута. Използвайте число или например
*/15за всеки 15 минути. - За командата въведете пълния път, например:
/usr/local/bin/php -q /home/gebruiker/domains/yourdomain.bg/public_html/taak.php
Заменете gebruiker с Вашето потребителско име в DA. - Кликнете върху Create.

Имейл след всяка cronjob задача
Резултатът от cronjob задача се изпраща до стандартния имейл акаунт на Вашия пакет, вижте Стандартният имейл акаунт в DirectAdmin. Можете също да изпращате резултата до собствен адрес чрез Send all Cron output to E-Mail. Ако не желаете имейли, кликнете върху Prevent E-mail при създаването или добавете след командата:
>/dev/null 2>&1
Внимание при PHP скриптове
Скрипт, който се изпълнява от cronjob, не знае под кой домейн работи. $_SERVER['SERVER_NAME'] и $_SERVER['DOCUMENT_ROOT'] са празни, а include с относителен път може да не успее. Затова поставете в началото на скрипта си:
$pad = '/home/gebruiker/domains/yourdomain.bg/public_html'; $_SERVER['SERVER_NAME'] = 'yourdomain.bg'; $_SERVER['DOCUMENT_ROOT'] = $pad; set_include_path($pad . PATH_SEPARATOR . get_include_path());
WordPress: WP-Cron чрез истинска cronjob задача
WordPress има собствен планировчик, WP-Cron, за задачи като планирани публикации, проверка за обновления и задачите на плъгините. Той не работи в определени часове, а само когато някой посети Вашия сайт. При малко посещения задачите изостават, а при много посещения всяко посещение отнема малко повече време. С обикновена cronjob задача WP-Cron се изпълнява в определени моменти.
- Добавете в
wp-config.php, над реда/* That's all, stop editing! */:define( 'DISABLE_WP_CRON', true );
- В Cron Jobs създайте задача, която се изпълнява например на всеки 15 минути: за минутата въведете
*/15, а за час, ден, месец и ден от седмицата поставете звездичка. Командата:/usr/local/bin/php -q /home/gebruiker/domains/yourdomain.bg/public_html/wp-cron.php >/dev/null 2>&1
Ако WordPress е инсталиран в подпапка, добавете я в пътя. - На следващия ден проверете в WordPress в Инструменти › Здраве на сайта дали няма съобщения за изоставащи планирани задачи.
И тук спазвайте правилото за най-много веднъж на 10 минути. За повечето сайтове на всеки 15 или 30 минути е достатъчно.
Вашата cronjob задача не се изпълнява?
Проверете следните точки една по една:
- Прочетете резултата. Временно премахнете
>/dev/null 2>&1и проверете имейла в стандартния имейл акаунт или задайте собствен адрес. Там често е описано точно какво се обърква. Можете също да записвате резултата в лог файл, като добавите след командата>> /home/gebruiker/cron-log.txt 2>&1. - Проверете пътя. Съобщението Could not open input file означава, че пътят до скрипта е грешен. Проверете във File Manager: пътят започва с
/home/gebruiker/domains/. - Проверете версията на PHP. С
/usr/local/bin/phpзадачата използва същата версия на PHP като Вашия уебсайт. Ако скриптът Ви работи само с друга версия, променете я в Select PHP version. - Тествайте командата ръчно. Ако имате пакет с Terminal, поставете командата там и вижте какво се случва, вижте SSH достъп и Terminal в DirectAdmin. Без Terminal отворете скрипта в браузъра си или го извикайте в cronjob задачата чрез
curl --silent https://www.yourdomain.bg/taak.php. - Проверете правата. Скриптът трябва да може да се чете: файловете трябва да са с права 644, а папките с 755. Вижте Права на файлове и папки (chmod).
- Проверете часа. Проверете при Schedule: дали задачата се изпълнява, когато очаквате. Ако за минутата има звездичка, тя се изпълнява всяка минута. Това е твърде често.
- Проверете колко време отнема задачата. Ако задачата отнема дълго време или стартира отново, преди предишната да е приключила, тя може да блокира или да доведе пакета Ви до неговите лимити. В такъв случай разпределете работата в няколко цикъла.
date >> /home/gebruiker/cron-log.txt; пред командата си.Вижте също в ръководството за DirectAdmin: Стандартният имейл акаунт на Вашия пакет.
Подробно обяснение с екранни снимки: Cron Jobs: автоматично изпълнение на задачи в ръководството за DirectAdmin.
Искате да научите повече? Запишете се за безплатния курс по WordPress, урок 6.3 Изображения, PHP и други начини за по-висока скорост.
