Задание Cron не дает требуемого результата, но доступ к тому же файлу через браузер
Мне нужно запустить php script
чтобы генерировать snapshots
с помощью CutyCapt
некоторых сайтов, использующих crone job
, я получаю адрес веб-сайтов из базы данных, а затем удаляю эту запись после создания скриншотов. я использовал */5 * * * * /usr/bin/php -f /path/generate.php
это не сработало для crone job
но если я получу доступ к тому же файлу, используя browser
он работает нормально, и если запустить этот скрипт с помощью команды php
от command line
это также работает отлично. Затем я просто создал другой файл и получил доступ к URL, используя file_get_contents
; добавил этот файл в crone job
в течение нескольких дней он работал нормально, но теперь этот подход также не работает. я не знаю что случилось я не изменил ни одного из этих файлов. Я тоже пробовал wget
Команда, чтобы получить доступ к этому URL, но не удалось получить необходимые положить. мой crontab теперь выглядит так*/5 * * * * wget "http://www.mysite.com/generate.php" -O /dev/null
Странно то, что задача крона выполняется нормально, она извлекает данные из базы данных, а также удаляет записи, но не обновляет изображения.
Есть ли какие-либо проблемы с правами или чем-то похожим, что мешает генерировать изображения с помощью задания кроны, но не при доступе с помощью браузера
Пожалуйста, помогите, я застрял.
2 ответа
Я не знаю, что делает ваш скрипт внутри, но имейте в виду, что задания cron пользователя не наследуют среду пользователя. Таким образом, вы можете столкнуться с проблемой PATH, если ваш php-скрипт выполняет какие-либо команды оболочки.
Если вы запускаете команды оболочки из скрипта, попробуйте установить переменную окружения PATH из скрипта php и посмотреть, поможет ли это.
Есть ли на этой странице учетные данные пользователей, например обычная проверка подлинности? если это так, вы должны определить имя пользователя и пароль в запросе wget, как
wget --http-user=user --http-password=password "http://url" ?
и попробуйте другое решение, запустив скрипт yor из командной строки php, чтобы ваш crontab мог выглядеть
*/5 * * * * /usr/bin/php -f /path/to/generate.php
Попробуйте это решение, оно будет работать, и это лучше, чем ударить по серверу для выполнения фоновых операций с вашими данными.
и я надеюсь, что это поможет