Помогите разобраться с CRON

Главные вкладки

Аватар пользователя _devid_ _devid_ 14 марта 2010 в 15:09

Настроил на хостинге периодический запуск 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).'

Что бы это могло значить?

Комментарии

Аватар пользователя demetriuse demetriuse 15 марта 2010 в 11:25

Тоже с кроном проблемма, его вызов настроил на хостинге, по почте приходят такие вот отчеты:
PHP Fatal error: Call to undefined function drupal_bootstrap() in /home/p/site/teh/public_html/cron.php on line 11

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 15 марта 2010 в 11:28

"Vladimir_VVV" wrote:
Ужос, Вы наверно пытаетесь выполнить срон пхп из шела.
Пробуйте
/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

Аватар пользователя serious.vip@drupal.org serious.vip@dru... 15 марта 2010 в 14:30

"Vladimir_VVV" wrote:
Ужос, Вы наверно пытаетесь выполнить срон пхп из шела.
Пробуйте
/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

Вызывать cron из php-cli неправильно, поскольку drupal неверно определяет переменную base_path и могут возникнуть "кривые" ссылки.

Аватар пользователя demetriuse demetriuse 16 марта 2010 в 10:24

Ничего не помогает, замучился ужо. Пробовал запускать его как писали:
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"

Руками крон постоянно запускать не дело....как то же он должен автоматом запускаться

Аватар пользователя demetriuse demetriuse 16 марта 2010 в 10:59

<a href="mailto:Siegfrid@drupal.org">Siegfrid@drupal.org</a> wrote:
Глупый вопрос, а wget установлен?

А как это можно проверить, через ВЕБ интерфейс хостера?

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 16 марта 2010 в 11:39

demetriuse wrote:
<a href="mailto:Siegfrid@drupal.org">Siegfrid@drupal.org</a> wrote:
Глупый вопрос, а 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.

Аватар пользователя demetriuse demetriuse 16 марта 2010 в 13:25

<a href="mailto:Siegfrid@drupal.org">Siegfrid@drupal.org</a> wrote:
согласен :), с хостингом так не прокатит.
Тогда просто можно дать команду wget и посмотреть, каков будет результат...

Вот что он ответил:
"wget: missing URL
Usage: wget [OPTION]... [URL]...

Try `wget --help' for more options."

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 16 марта 2010 в 15:45

значит wget есть Smile

У меня следующие строчки в cron:
5,15,25,35,45,55 * * * * wget -O - -q -t 1 http://mysite.ru/cron.php

- попробуйте написать тоже самое, токо адрес сайта поменяте и пишите все на одной строчке!

кстати, выложите ка результат crontab -l

Аватар пользователя demetriuse demetriuse 16 марта 2010 в 16:23

<a href="mailto:Siegfrid@drupal.org">Siegfrid@drupal.org</a> wrote:
значит wget есть Smile

У меня следующие строчки в 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"

Попробую Вашу строку вставить

Аватар пользователя ShurikGrOb@drupal.org ShurikGrOb@drup... 16 марта 2010 в 21:30

У меня так
в 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 - путь до корневого каталога вашего сайта

Аватар пользователя demetriuse demetriuse 17 марта 2010 в 13:18

<a href="mailto:ShurikGrOb@drupal.org">ShurikGrOb@drupal.org</a> wrote:
У меня так
в 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

Судя по логам друпала - ВСЕ РАБОТАЕТ, по мылу ничего не приходит от хостинга.
СПС

Аватар пользователя Vladimir_VVV Vladimir_VVV 18 марта 2010 в 1:50

странно, у самого на свебе 2 акка на разных серваках и у всех работает через вгет без проблем.
А пускать крон через php-cli типа себя неуважать.Вернее не так, у меня мультисайт по 25 сайтов на акке, поэтому как то через кли будет геморно.

В поле "команда" введено:
/usr/bin/wget -O - -q -t 1 http://www.site.ru/cron.php

все работает без вопросов, а то инклудванс... сервер... хттп_хост - муть!

Аватар пользователя demetriuse demetriuse 18 марта 2010 в 12:06

Vladimir_VVV wrote:
странно, у самого на свебе 2 акка на разных серваках и у всех работает через вгет без проблем.
А пускать крон через php-cli типа себя неуважать.Вернее не так, у меня мультисайт по 25 сайтов на акке, поэтому как то через кли будет геморно.

В поле "команда" введено:
/usr/bin/wget -O - -q -t 1 http://www.site.ru/cron.php

все работает без вопросов, а то инклудванс... сервер... хттп_хост - муть!

Попробую Smile

Аватар пользователя Verish.Net Verish.Net 18 марта 2010 в 8:27

"<a href="mailto:serious.vip@drupal.org">serious.vip@drupal.org</a>" wrote:
используйте poormanscron

Я тоже напрямую настроить cron не смог (наверное - "руки" такие), запускаю через poormanscron, вроде все оки.

Аватар пользователя serious.vip@drupal.org serious.vip@dru... 18 марта 2010 в 17:26

Verish.Net wrote:
"<a href="mailto:serious.vip@drupal.org">serious.vip@drupal.org</a>" wrote:
используйте poormanscron

Я тоже напрямую настроить cron не смог (наверное - "руки" такие), запускаю через poormanscron, вроде все оки.

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

Аватар пользователя demetriuse demetriuse 19 марта 2010 в 10:54

Теперь крон не запускается вообще...пишет в отчете вот что "Время выполнения регулярных процедур превысило час, скорее всего это зависание.".
Уже несколько дней такое пишет и не зап-ся. Я читал что при запуске он какой то флаг выставляет, можно этот флаг как то в ручную сбросить?

А все разобрался - повторно запускаешь ручками у усе.

Аватар пользователя Valeratal Valeratal 20 марта 2010 в 23:19

я вот не понимаю логики этого семафора
допустим, да, крон не успел чего то до делать
но зачем ждать целый час, отбивать все попытки повторного запуска, чтобы более чем через час дать возможность запустить крон?

Аватар пользователя serious.vip@drupal.org serious.vip@dru... 21 марта 2010 в 3:11

семафор, как следует из названия - объект для синхронизации. простыми словами, он не дает вам возможности запустить одновременно более чем 1 cron. он устанавливается при запуске крона и сбрасывается при успешном завершении. если при запуске крона семафор был установлен - крон не запустится. но если при этом с момента установки прошло более часа - он сбросится и следующий крон запустится. сделано так для того, чтобы если что-то упало, то были автоматические попытки восстанровить

Аватар пользователя Valeratal Valeratal 21 марта 2010 в 10:06

да хрен чего восстановит
вот у меня щас, буст чего то не успевает сделать (обновить файлы кэша), и чего. Можно подумать буст целый час эти файлы обновляет. Ничего подобного. Все останавливается, ровно до следующей попытки. В результате, другие операции, которые успевал сделать крон, тоже не делаются (у меня крон каждые 15 минут) - наприммер отправка рассылки simplenews

что касается одновременного запуска. Друпал сам понять не может, что случилось?
1. Крон не успел отработать задачу и на последнем задании все и остановилось
2. Крон запущен в данное время

Что, у кого то крон реально работает целый час? Подскажите как такое настроить, я тоже хочу. А то вечно крон не успевает

Аватар пользователя serious.vip@drupal.org serious.vip@dru... 22 марта 2010 в 10:08

Cron выполняет цепочку функций, не более. И если где-то посередине что-то упало - остальное не запустится. Так было задумано. Для более "продвинутого" cron'а надо использовать сторонние модули.