Как определить что PHP скрипт запущен по CRON или вручную
7 Окт 2020 Несколько способов узнать, что php-скрипт запущен/выполняется по crontab job. 1. Самый надежный способ, это внутри crontab файла явно определить переменную: SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/var/www/your-project/bin SOME_PROJECT_WORK_DIR="/var/www/your-project" IS_CRON=true * * * * * cd "$OME_PROJECT_WORK_DIR" && php artisan schedule:run >> /dev/null 2>&1 0 */2 * * * cd "$OME_PROJECT_WORK_DIR" && flock -w 0 ./cron-some-job.lock ./cron-some-job.sh >> ./cron-some-job.log 2>&1 И проверять внутри скрипта: $isCli = (php_sapi_name() === 'cli'); $isCron = ($isCli && isset($_SERVER['IS_CRON'])); if ($isCron) { echo "Скрипт запущен по CRON'уn"; } 2. Неявный способ. При запуске скриптов по CRON, обычно внутри скрипта доступно очень мало переменных окружения $_ENV. Часто, имеется только 1 переменная: [SHELL_VERBOSITY] => 0 Если нужен универсальный способ и нет возможности редактировать crontab - можно проверять количество $_ENV переменных: $isCli = (php_sapi_name() === 'cli'); $isCron = ($isCli && count(array_keys($_ENV)) < 5); if ($isCron) { echo "Скрипт запущен по CRON'уn"; } Метод для копи/паста: protected function isCron() { return (php_sapi_name() === 'cli' && isset($_SERVER['IS_CRON'])); } Если знаете другой способ, как определить что скрипт запущен по cron'у - предлагайте.