Поддержка

Акция: бесплатная раздача доменов .RU !
03 Мар 2010
Мы дарим домены .RU всем, кто единоразово заказывает наши услуги на сумму от 1400 рублей. Подробности условий акции по ссылке.
Изменения в технической части тарифов хостинга
01 Мар 2010
С 1 апреля вступают в силу значительные изменения в тарифных планах хостинга: отменяется php memory_limit, в 2 раза увеличивается дисковое пространство и добавляется еще много приятных вещей.
Все новости
RSS RSS

Екатеринбург:

253-55-00

Для регионов России:

8-800-2000-699

Проверить домен:

пример: netangels.ru или 91.201.52.1

Общие сведения по работе с PHP, Perl, ImageMagick, использованию CRON на хостинге и др.

Использование CRON

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

В случае если какое-то из запускаемых Вами заданий делает вывод информации в консоль (например, скрипт на php делает echo "..."), все то, что он выводит, отправляется на электронную почту. По умолчанию эти данные отправляются на адрес, указанный в панели управления как технический e-mail. Вы можете изменить это поведение, прописав первой строчкой crontab-файла `MAILTO=your@e-mail.ru`. В таком случае вывод всех команд будет отправляться на your@e-mail.ru.

Кроме этого, отправку выводных данных из какой-то из команд в crontab можно подавить. Для этого в конец соответствующей строчки, запускающей эту команду, в файле crontab нужно добавить переадресацию: ` > /dev/null`, Например:

/usr/bin/php cronjobs.php > /dev/null

Если скрипт выводит сообщения в поток ошибок, которые тоже желательно подавить, то можно использовать конструкцию следующего вида:

/usr/bin/php cronjobs.php 2> /dev/null 

Для подавления всего вывода скрипта (на stdout и stderr) можно использовать такую конструкцию:

/usr/bin/php cronjobs.php 1> /dev/null  2>&1

Довольно часто нам приходится сталкиваться с ситуацией, когда программисты не понимают, как именно происходит запуск скриптов в cron и чем он отличается от запуска этих же скриптов через веб-сервер (т.е. от вызова скрипта по адресу http://www.site.ru/path/to/script.php). Дело в том, что когда скрипт запускается через вызов в броузере (или вызов wget'ом), интерпретатор php перед запуском скрипта переходит в папку, где располагается этот скрипт. Поэтому в скрипте работают такие вещи как include("./somefile.php"), подключающие файл из той же директории, где сам скрипт.

Когда этот же скрипт запускается из cron'а, cron устанавливает в качестве "текущей" домашнюю директорию Вашего аккаунта. Соответственно, если у Вас в cron прописано что-то вроде

/usr/bin/php site.ru/www/path/to/script.php,

то script.php будет запущен без перехода в папку  site.ru/www/path/to. Если данному скрипту для работы необходимо, чтобы он запускался только из папки site.ru/www/path/to, необходимо сделать явный переход в эту папку перед запуском. Самый простой вариант сделать это - модифицировать строчку в crontab-файле следующим образом:

cd site.ru/www/path/to && /usr/bin/php script.php

Так же хотим Вас предостеречь от вызова Ваших утилит cron'ом через wget (типа wget http://www.site.ru/path/to/script.php). Дело в том, что у php, запущенного через apache, есть целый ряд ограничений, в т.ч. и на время работы скрипта. Если Ваш cron-скрипт работает достаточно долго, он может просто не успевать отработать до конца, прежде чем его работа будет принудительно завершена. Кроме того, на работу таких скриптов будут оказывать влияния перезагрузки веб-сервера, выполняемые периодически, а также лимиты на количество процессов php, которые разрешены для запуска через apache. 

Путь до основных утилит

Если Вам нужно напрямую обратиться к каким-то утилитам командной строки, например, с cli-интерпретатору php, perl или программам из пакета ImageMagick, в большинстве случаев требуемая Вам программа будет находиться в каталоге /usr/bin, например: /usr/bin/php - интерпретатор php, /usr/bin/perl - интерпретатор perl, /usr/bin/convert - ImageMagick и т.п.