Запуск PHP скрипту за розкладом cron

скрипту

Випадок перший

У налаштуваннях операційної системи не зазначено шляхів за промовчанням. Як наслідок, наступна команда в cron не буде виконана.

Правильною командою буде другий варіант, де ми пропишемо повний шлях до php інтерпретатора.

Є ще кілька способів запуску php скрипту, описаних тут. Цікавим буде тут те, що php скрипт запускається як файл із командами для консолі і тут можна написати цілу хмару команд та описати всілякі варіанти на будь-який смак. Код має такий вигляд.

У команді для виконання в cron прописується шлях до скрипту та тільки. У скрипті ставляться символи #!, а далі просто пишемо потрібні нам команди мовою bash.

Випадок другий

Виконання скрипта при запиті з браузера призводить до виведення сторінки до браузера. При виконанні скрипта через cron призводить до виведення тексту сторінки в командний рядок. Тут може бути кілька варіантів. Система може бути налаштована на збереження результатів виведення консоль у вигляді файлу. Причому цей файл може розмішатися не в самому типовому місці. Поступово це може забити весь простір на диску. Часто під сайт дають місце в 1 гігабайт, 500 мегабайт. І навіть зустрічалися хостинги з 50 та 10 мегабайт під сайт.

Рішення старе як світ. Потрібно зробити перенаправлення виведення з консолі в порожнечу. Робиться це додаванням команди наприкінці команди крона.

Іноді адміни хостингу беруть він обов'язок ненав'язливо поставити їх за користувача. Тут також може бути підводний камінь.

Випадок третій

Ситуація проста. Потрібно налагодити скрипт, який запускає планувальник. Можна спробувати це зробити засобами php, змушувати скрипт писати логії тощо. Але є спосіб, кудипростіше потрібно перенаправити висновок у файл. Команда проста, додатковий параметр до нашої команди:

Її треба додати наприкінці команди:

Знак «>» вказує на систему про перенаправлення висновку. Далі – ім'я файлу. У нашому випадку вказано абсолютний шлях. Цей приклад нескладно знайти в інтернеті. Але тут нас може чекати неприємність, яка з другого випадку. Дбайливий хостер автоматично додає перенаправлення виводу наприкінці нашого рядка. І іноді маскує це. У результаті виходить команда виду:

У результаті висновок знову перенаправлений у порожнечу і вихідний файл буде порожнім. Тут хостеру можна вказати на його помилку, що він занадто перехитрив з налаштуваннями. А можна відразу скористатися милицею. Після команди перенаправлення файл завершити команду символами &&. Ці два символи використовуються в командному рядку, щоб об'єднати декілька команд в одному рядку. Вони дають командному рядку зрозуміти, що команда закінчена і далі йде наступна команда. До неї і застосовується перенаправлення на порожнечу. У результаті і перенаправлення в порожнечу залишилося і лог файл записано правильно. Приклад команди:

Випадок четвертий

Скрипт запустився, але працює не так. Причиною тому — інтерпретатор php при запуску з командного рядка починає працювати в неправильно настроєному оточенні, відмінному від того, яке було б при запуску через HTTP-сервер. Перша ознака – скрипт не знаходить файли, які лежать з ним в одній директорії, а починає вважати себе розташованим у кореневій директорії користувача, яка на кілька папок вища за корінь сайту. Перше, що потрібно перевірити – змінне оточення та супер глобальний масив $_SERVER.

Перше, що знаходиш в інтернеті з цієї проблеми – порада прописати у кроні команду зміни директорії:

Але у якихось випадках це не допомагає. Вихід є. Один з них взяти все в свої руки і задати оточення для роботи скрипта. Інформація про це в інтернеті вже більша.

Іноді просто вистачає вписати наступний код на початку скрипту і шляхи знову стають робітниками.

Як бачите, все прописано функціями і трудитися налаштуваннями не треба.

Висновок

На цьому все. Проблеми та рішення не тривіальні і взагалі таке поєднання невдалих налаштувань трапляється рідко. Успіхів вам при розгортанні своїх проектів і при переїздах.