Боремся с кроном
Прислано: Stalker-g2
пн, 26/05/2008 - 07:28
Как известно, крон в друпале по дефолту запускается только через браузер. Это неправильно(паразитные соединения с вёб-сервером) и часто неудобно.
Например, я использую flashvideo для автоматической генерации flv и 3gp из avi. Если роликов было закачано много - процесс занимает длительное время, а разрешать скриптам выполняться по 6 минут через вёб-сервер - это значит сделать подарок DDoS-ерам. Поэтому можно взять, да и пропатчить файл стандартного крона так, чтобы его можно было выполнить через:
/usr/local/bin/php usr/home/www.test.ru/cron.php
Вот, собственно, что надо изменить, чтобы всё работало как надо.
<?php // $Id: cron.php,v 1.36 2006/08/09 07:42:55 dries Exp $ /** * @file * Handles incoming requests to fire off regularly-scheduled tasks (cron jobs). */ $_SERVER['HTTP_HOST'] = 'test.ru'; $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; $_SERVER['REQUEST_METHOD'] = 'GET'; chdir('/home/www.zaposti.ru/public_html'); include_once './includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); flashvideo_cron(); /* $users = db_query('SELECT * FROM {users}'); while($user = db_fetch_array($users)) { echo $user['name'] . '\n'; } echo 'all'; */
- Stalker-g2's blog
- Для комментирования войдите или зарегистрируйтесь
Ну, ни фига себе! Есть же модуль авто-запуска крона через определенный интервал!
PoorMansCron - Бедный Крон!
Хотя ход интересный!
- Для комментирования войдите или зарегистрируйтесь
PoorMansCron - это крон для бедных! Хотя с горя поставил уже и его...
Мне хостер тоже сказал, что для такого запуска нужно абсолютные пути в скрипте использовать...
Решение было сохранено на сайте DrupalCookBook.ru:
Запуск хронометра (cron).
Авторы, предложившие решения, также указаны в сохранённой статье.
- Для комментирования войдите или зарегистрируйтесь
[дубля]
- Для комментирования войдите или зарегистрируйтесь
А если это мультисайт, тогда, что по одному cron.php на каждый url делать?
zaposti.cron.php
<?php $_SERVER['HTTP_HOST'] = 'zaposti.ru';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
reqiure('usr/home/www.zaposti.ru/cron.php');?>vezidko.cron.php
<?php $_SERVER['HTTP_HOST'] = 'vezidko.ru';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
reqiure('usr/home/www.vezidko.ru/cron.php');?>- Для комментирования войдите или зарегистрируйтесь
Автозапуск крона не поможет, если через крон у вас по полчаса видео конвертируется)))
крон для бедных тут тоже не вариант
- Для комментирования войдите или зарегистрируйтесь
У меня cron.php запускается так:
/home/........./scripts/cron-curl.sh
На скрипт нужно было выставить право исполнения для владельца и внутри изменить доменное имя.
Может быть вам поможет.
- Для комментирования войдите или зарегистрируйтесь
А если это мультисайт, тогда, что по одному cron.php на каждый url делать?
zaposti.cron.php
<?php $_SERVER['HTTP_HOST'] = 'zaposti.ru';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
reqiure('usr/home/www.zaposti.ru/cron.php');?>vezidko.cron.php
<?php $_SERVER['HTTP_HOST'] = 'vezidko.ru';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
reqiure('usr/home/www.vezidko.ru/cron.php');?>правильно
однако в целом я предпочитаю другой подход - я обычный крон запускаю по стандарту, а громоздкие задачи выношу в отдельные скрипты
- Для комментирования войдите или зарегистрируйтесь
PoorMansCron - это крон для бедных! Хотя с горя поставил уже и его...
Вот!
А что делать, если некогда?..... да и к тому же меня устраивает запуск крона через часов 10...
- Для комментирования войдите или зарегистрируйтесь
Коллеги, доброго времени суток!
При запуске cron.php через php возникла следующая проблема:
В письмах приходящих по подписке приходят битые ссылки.
Ссылки выглядят как
http://mydomain.ru/home/www/mydomain.ru/public_html/weblinks/49350
Где /home/www/mydomain.ru/public_html/ - хоумдира сайта.
Где грабли?
- Для комментирования войдите или зарегистрируйтесь
Здравствуйте.
Подскажите, пожалуйста - есть 2 сайта на одном шаред-хостинеге (не мультисайтинг - разные БД, директории, наборы модулей и т.д.)
Дописал в начале cron.php для каждого сайта
<?php
$_SERVER['HTTP_HOST'] = 'site1.ru';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
chdir('/home/userXXX/data/www/site1.ru');
?>и
<?php
$_SERVER['HTTP_HOST'] = 'site2.ru';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
chdir('/home/userXXX/data/www/site2.ru');
?>соответственно.
С одним сайтом все в порядке - крон регулярно выполняется, со вторым - проблема: приходит сообщение на почту
"PHP Notice: Undefined index: SERVER_SOFTWARE in /home/userXXX/data/www/site2.ru/includes/bootstrap.inc on line 660"
В чем может быть проблема?
- Для комментирования войдите или зарегистрируйтесь






Комментарии