Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля
Новогодние скидки до 25%!
Подробнее

Запуск собственных скриптов в crontab

09.07.2007, 18:30
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

Добрый день!
Неткат версии 244 плюс (если это имеет значение)
Беда такая - в кронтабе чудесно прописаны стандартные скрипты - запуск индексации поиска, запуск оптимизации таблиц, сбора статистики. Всё это чудно по расписанию работает.
Добавляю свой скрипт, например /netcat/modules/sites/index.php - кронтаб пишет в базу, что скрипт отработал, но на самом деле скрипт не запускался.
Если ручками запустить скрипт /netcat/admin/crontab.php - то мой личный скрипт отработает наравне с другими.
Расковырял скрипт кронтаба - он прост, как валенок, через passthru пропускает мой скрипт. Вне зависимости от того, выводит при работе мой скрипт что-нибудь на экран или нет, не работает. Ошибку passthru не выдаёт (код возврата - 0).
Права на мой скрипт и каталог, где он лежит, поставил 755. Не помогло, ессно.
Я уже не знаю, куда и смотреть.

urix
10.07.2007, 02:11
d

Зарегистрирован:
2007-02-09
Сообщений: 93

Если запускать скрипт вручную или через cron - то будут разные пользователи. Посмотреть на предмет прав и видимости wget у нужного пользователя. Чаще всего проблема не с правами, а с видимостью - пропишите /usr/bin/wget (или где он находится). Если wget вообще не установлен, то можно использовать fetch.
Проверьте, правильно ли определяется url для выполнения ($HTTP_HOST может быть не виден): http://".$HTTP_HOST.$rs['Cron_Script_URL']

Обычно этих действий хватает в случае, если в базу пишется, что скрипт отработал.
PS:
Цитата:
Всё это чудно по расписанию работает.

Вряд ли оно работает, просто пишет, что отработало.
10.07.2007, 11:20
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

d писал(а):
Если запускать скрипт вручную или через cron - то будут разные пользователи. Вряд ли оно работает, просто пишет, что отработало.

Работает. Сайт-то по расписанию переиндексируется, таблицы оптимизируются, я специально отслеживал...

URL определяется правильно, я проверял.
wget отрабатывает, ему по барабану, какой УРЛ тянуть. Ведь неткатовские скрипты работают же =/
Miph, спасай! улыбка

urix
10.07.2007, 14:19
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

Итак, решение было найдено.
Я ошибался, wget отказывался работать. Когда я включил запись лога wget-а в файл, обнаружились нелицеприятные особенности.
Цитирую лог
<noindex>
Код:
http:///netcat/modules/optimize/cron.php: Empty host.

Опа! HTTP_HOST не передаётся! Во-первых, в crontab.php прописано так
Код:
$_SERVER['HTTP_HOST']="имясайта.ru"; # Домен

И при вызове самого wget-а переменная передаётся таким образом
Код:
passthru("wget -O - -q http://".$HTTP_HOST.$rs['Cron_Script_URL']);

Не всегда это работает!
Я озверел, прописал вручную в мою переменную
Код:
$myhost="имясайта.ru";
passthru("wget -O - -q http://".$myhost.$rs['Cron_Script_URL']);

Подойдёт и такой вариант
Код:
passthru("wget -O - -q http://".$_SERVER['HTTP_HOST'].$rs['Cron_Script_URL']);

Аллилуйя, завелось!
Неткатовцы, пожалуйста, поправьте скрипт. Наверняка у многих такая же проблема - вроде бы запуск по крону происходит, а по факту - фиг. Оттого и проблемы с поиском "не индексирует", и базы не оптимизируются...
</noindex>

urix
10.07.2007, 17:52
d

Зарегистрирован:
2007-02-09
Сообщений: 93

Цитата:
Опа! HTTP_HOST не передаётся!

Я же вроде прямо об этом и написал:
Цитата:
Проверьте, правильно ли определяется url для выполнения ($HTTP_HOST может быть не виден)


PS: а Miph уже давно не работает в Неткете.
10.07.2007, 18:55
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

d писал(а):

Я же вроде прямо об этом и написал:
Проверьте, правильно ли определяется url для выполнения ($HTTP_HOST может быть не виден)

Нда. Вот и верь после этого людям улыбка
Я-то полагал, что скрипт отлажен, а оно вот как улыбка

d писал(а):
PS: а Miph уже давно не работает в Неткете.

Ого! А теперь вы за него?
И последний вопрос - дамп по крону не создаётся. Лог wget-а показал, что когда я пытаюсь открыть /netcat/admin/dump.php?phase=1 , меня просят залогиниться в неткат.
Что делать? ;)

urix
10.07.2007, 19:16
d

Зарегистрирован:
2007-02-09
Сообщений: 93

Цитата:
Нда. Вот и верь после этого людям улыбка
Я-то полагал, что скрипт отлажен, а оно вот как улыбка

Мой совет был основан на том, что я сталкивался с такой проблемой на некоторых хостингах, а не на том, что скрипт не отлаженулыбка Хотя, конечно, не стоило полагаться на внешние факторы.
Цитата:
Ого! А теперь вы за него?

Нет, я вообще там никогда не работалулыбка Насколько мне известно, основная работа техподдержки системы идет через helpdesk, а не на форуме
Цитата:
И последний вопрос - дамп по крону не создаётся.

Ну да, было бы странно, если бы любой пользователь без авторизации мог создать дамп - этим хостинг можно завалить за 2 минуты. Нужно на основе скрипта dump.php сделать исполняемый скрипт без авторизации (но с проверкой на ключевое слово, как остальные скрипты), и запускать его.
11.07.2007, 11:12
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

d писал(а):

Ну да, было бы странно, если бы любой пользователь без авторизации мог создать дамп - этим хостинг можно завалить за 2 минуты. Нужно на основе скрипта dump.php сделать исполняемый скрипт без авторизации (но с проверкой на ключевое слово, как остальные скрипты), и запускать его.

Я почему-то так и подумал =)
Но это уже ведь совсем хак системы получается, хочется сохранить целостность основных файлов. А то у меня 4 сайта на неткате, и в случае обновления это всё опять придётся переписывать... бррр...

urix
11.07.2007, 13:29
d

Зарегистрирован:
2007-02-09
Сообщений: 93

почему хак? "На основе скрипта dump.php" - это не значит, что нужно переписывать исходный файл. Можно новый назвать как угодно и положить куда угодно. И запускать по крону.
198 196 2007-07-11 13:29:54 10019
Описание проекта