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

После разработки парсера на 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 скрипт.