Настроил на хостинге периодический запуск cron`a. Поставил галку присылать уведомления на почту.
Вот что приходит по почте:
/home/h/site/public_html/cron.php: line 1: ?php: No such file or directory
/home/h/site/public_html/cron.php: line 2: //: is a directory
/home/h/site/public_html/cron.php: line 4: /**: No such file or directory
/home/h/site/public_html/cron.php: line 5: public_html: command not found
/home/h/site/public_html/cron.php: line 6: syntax error near unexpected token `('
/home/h/site/public_html/cron.php: line 6: ` * Handles incoming requests to fire off regularly-scheduled tasks (cron jobs).'
Что бы это могло значить?
Комментарии
Нужно через веб-интерфейс делать вызов.
http://example.com/cron.php
Или указывать прямой вызов для РНР-интерпретатора.
PS.
http://drupalcookbook.ru/recept/zapusk-hronometra-cron
Ужос, Вы наверно пытаетесь выполнить срон пхп из шела.
Пробуйте
/usr/local/bin/php -f /home/h/site/public_html/cron.php >/dev/null 2>&1
или
wget -O - -q -t 1 http://www.site.ru/cron.php >/dev/null 2>&1
или
/usr/bin/wget -O - -q http://www.site.ru/cron.php >/dev/null 2>&1
Тоже с кроном проблемма, его вызов настроил на хостинге, по почте приходят такие вот отчеты:
PHP Fatal error: Call to undefined function drupal_bootstrap() in /home/p/site/teh/public_html/cron.php on line 11
Вызывать cron из php-cli неправильно, поскольку drupal неверно определяет переменную base_path и могут возникнуть "кривые" ссылки.
У меня настроено таким образом: каждый час выполняется строка "/usr/bin/wget -q http://www.мойсайт.ru/cron.php >/dev/null 2>&1"
Ничего не помогает, замучился ужо. Пробовал запускать его как писали:
1. "/usr/bin/wget -q http://www.мойсайт.ru/cron.php >/dev/null 2>&1" - не запускается вообще
2. "/usr/local/bin/php -f /home/h/site/public_html/cron.php >/dev/null 2>&1" - тоже не запускается вообще
3. "~/teh/public_html/cron.php" и сделал как у хостеров написанно "Как запустить PHP-скрипт?
Задайте в PHP-файле путь к интерпретатору: #!/usr/local/bin/php (первая строка в файле). Установите на файл права 705. " - Запускается
но по почте присылает: "PHP Fatal error: Call to undefined function drupal_bootstrap() in /home/p/site/teh/public_html/cron.php on line 11"
Руками крон постоянно запускать не дело....как то же он должен автоматом запускаться
Глупый вопрос, а wget установлен?
А как это можно проверить, через ВЕБ интерфейс хостера?
На ubuntu: sudo apt-get install wget
Если он установлен, то так операционка и напишет:
Reading package lists... Done
Building dependency tree
Reading state information... Done
wget is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Через консоль
используйте poormanscron
Ага, на хостинге дадут ему судо
согласен :), с хостингом так не прокатит.
Тогда просто можно дать команду wget и посмотреть, каков будет результат...
Вот что он ответил:
"wget: missing URL
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options."
просто спросите у вашего хостера
значит wget есть
У меня следующие строчки в cron:
5,15,25,35,45,55 * * * * wget -O - -q -t 1 http://mysite.ru/cron.php
- попробуйте написать тоже самое, токо адрес сайта поменяте и пишите все на одной строчке!
кстати, выложите ка результат crontab -l
Вот что он отвечает на crontab -l:
"cannot chdir(/var/spool/cron), bailing out.
/var/spool/cron: Permission denied"
Попробую Вашу строку вставить
похоже что cron у вас запрещен
У меня так
в cron
0 */2 * * */usr/local/bin/php /home/m/mysiteru/main/public_html/cron.php
где /home/m/mysiteru/main/public_html/cron.php - путь до cron.php
Добавил в cron.php строки перед include_once './includes/bootstrap.inc';
Вот строки:
$_SERVER['HTTP_HOST'] = 'mysite.ru';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
chdir('/home/m/mysite/main/public_html');
где /home/m/mysite/main/public_html - путь до корневого каталога вашего сайта
Если не секрет....кто Ваш хостер?
Пробую. Мой хостер SWEB
Судя по логам друпала - ВСЕ РАБОТАЕТ, по мылу ничего не приходит от хостинга.
СПС
Мой хостер sweb. И у меня тоже были проблемы с кроном. Пока методом тыка не дошёл до этого.
странно, у самого на свебе 2 акка на разных серваках и у всех работает через вгет без проблем.
А пускать крон через php-cli типа себя неуважать.Вернее не так, у меня мультисайт по 25 сайтов на акке, поэтому как то через кли будет геморно.
В поле "команда" введено:
/usr/bin/wget -O - -q -t 1 http://www.site.ru/cron.php
все работает без вопросов, а то инклудванс... сервер... хттп_хост - муть!
Попробую
Я тоже напрямую настроить cron не смог (наверное - "руки" такие), запускаю через poormanscron, вроде все оки.
Дело не в руках. Действительно, зачем мучить себя и других, когда уже давным давно все сделано и написано? Вендетта?
Теперь крон не запускается вообще...пишет в отчете вот что "Время выполнения регулярных процедур превысило час, скорее всего это зависание.".
Уже несколько дней такое пишет и не зап-ся. Я читал что при запуске он какой то флаг выставляет, можно этот флаг как то в ручную сбросить?
А все разобрался - повторно запускаешь ручками у усе.
На будущее - называется эта переменная - cron_semaphore
я вот не понимаю логики этого семафора
допустим, да, крон не успел чего то до делать
но зачем ждать целый час, отбивать все попытки повторного запуска, чтобы более чем через час дать возможность запустить крон?
А как ты узнаешь это?
семафор, как следует из названия - объект для синхронизации. простыми словами, он не дает вам возможности запустить одновременно более чем 1 cron. он устанавливается при запуске крона и сбрасывается при успешном завершении. если при запуске крона семафор был установлен - крон не запустится. но если при этом с момента установки прошло более часа - он сбросится и следующий крон запустится. сделано так для того, чтобы если что-то упало, то были автоматические попытки восстанровить
да хрен чего восстановит
вот у меня щас, буст чего то не успевает сделать (обновить файлы кэша), и чего. Можно подумать буст целый час эти файлы обновляет. Ничего подобного. Все останавливается, ровно до следующей попытки. В результате, другие операции, которые успевал сделать крон, тоже не делаются (у меня крон каждые 15 минут) - наприммер отправка рассылки simplenews
что касается одновременного запуска. Друпал сам понять не может, что случилось?
1. Крон не успел отработать задачу и на последнем задании все и остановилось
2. Крон запущен в данное время
Что, у кого то крон реально работает целый час? Подскажите как такое настроить, я тоже хочу. А то вечно крон не успевает
Всё правильно у тебя работает, как и было задумано
Cron выполняет цепочку функций, не более. И если где-то посередине что-то упало - остальное не запустится. Так было задумано. Для более "продвинутого" cron'а надо использовать сторонние модули.