Не работает php скрипт в командной строке

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5
Загрузка...

После разработки парсера на php, запускать его через браузер не совсем правильно, так как скрипт может «подвесить» весь сайт и даже хостинг. Многие хостинг компании предоставляют запуск скриптов из Cron задания.

Так например на хостинге beget можно в панели управления указать путь до php файла, и сразу же сделать запуск. При этом скрипт может работать до 10 часов.

Если же использовать команду wget, то скрипт будет автоматически отключаться в рамках лимита, установленного хостингом. Понятное дело, что 10 или 20 минут парсеру может не хватит, ведь нужно пройтись по сайту, загрузить картинки, добавить в БД различные позиции.

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

Первое на что стоит обратить внимание, это конечно глобальный массив

$_SERVER

Дело в том, что переменные из данного массива, не будут определяться при запуске скрипта из консоли, поэтому переменную вида:

$_SERVER['DOCUMENT_ROOT']

Нужно заменить на

__DIR__

Если в вашем скрипте есть функции которые «инклудом» подключаются с помощью DOCUMENT_ROOT из другого файла, то произойдёт ошибка, ведь функция не погрузилась из внешнего файла, но при этом используется в разработке.

Пример:

<?php
include $_SERVER['DOCUMENT_ROOT'].'/function.php';
//В файле function.php есть функция go();
//Вызываем функцию
go();
?>

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

<?php
include __DIR__.'/function.php';
//В файле function.php есть функция go();
//Вызываем функцию
go();
?>

Так же хочу отметить, что константа __DIR__ показывает папку в которой лежит, вызываемый php скрипт.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*