Cron / одна задача в планировщике не выполняется

#1 21 августа 2016 в 21:14
Добрый вечер. Нарисовалась интересная проблема.
Задача в планировщике вручную выполняется. А вот по cron нивкакую. Только она одна, остальные выполняются. Если все задачи отключить, она все равно не выполняется.

При выполнении вручную ошибок не выдается.

В файле cron.php все просто, задачи запускаются по порядку. Сломал мозг, не пойму, куда копать.
#2 21 августа 2016 в 21:18
Zau4man,
Было такое однажды. Проблема была в одиночных скобках ` которые являются служебным символом.

Вынес команду хрона в отдельный файл .sh а в хрон вписал исполнение этого файла.
#4 22 августа 2016 в 13:29
Попробовал запустить задачу из панели хостинга, получил

  1. Exited with return code = 255
Погуглил. Для isp и шаред хостинга это нормально. Прописал свой e-mail в настройках. Сейчас еще попробую wget-ом дернуть файлик cron, предварительно закомментировав 5 строку.
#5 22 августа 2016 в 13:51
Zau4man, создайте связку my_cron.txt + my_cron.php, как я советовал в своем блоге и еще раз нажмите на кнопку Запустить задачу. Если в my_cron.txt появился текст — вот тогда все нормально…
#6 22 августа 2016 в 14:08
Странник, зачем? cron работает! Другие задачи выполняются. Не выполняются только конкретные две. Причем не выполняются только при запуске задач с помощью cron. При запуске через wget (ну или просто в бразуере дергаем сайт/cron.php) все выполняется.
#7 22 августа 2016 в 14:22
Zau4man, Ага, понял.
Я и с таким сталкивался — синтаксическая ошибка. В этом случае надо в панели хостинга настроить отправку ошибок на мыло.

ps. еще вспомнил. может быть еще одна причина, почему некоторые скрипты по cron не выполняются. причина — они используют методы ядра (либо методы из модели компонента) которые не были проинициализированы при старте скрипта. другими словами — ты метод вызываешь, а объект (экземпляр класса) в который этот метод вставлен — не создал.
#8 22 августа 2016 в 22:27
На почте нарисовалась ошибка.

  1. PHP Fatal error:
  2. The encoded file /var/www/*****/data/www/******/system/controllers/zpostervk/frontend.php is not permissioned for this server
  3. in Unknown on line 0
Гугление и небольшое знание английского подсказывают, что скрипт "закодирован не для этого сервера". Но он 100% закодирован именно для домена ******.

Куда копать дальше? Трясти техподдержку? Что спрашивать?
#9 23 августа 2016 в 08:47


Гугление и небольшое знание английского подсказывают, что скрипт "закодирован не для этого сервера". Но он 100% закодирован именно для домена ******. Куда копать дальше? Трясти техподдержку? Что спрашивать?

При запуске скрипта по cron по cli отсутствуют переменные окружения. Это распространенная проблема. Т.е. $_SERVER вообще не определена. Выход:
1. Насроить запуск скрипта по wget, как посоветовано в блоге Странника;
2. Попробовать обойти костылем. Как то так :
  1. $_SERVER['DOCUMENT_ROOT'] = 'my_domen.ru';
Последнюю строчку надо вставить где-то в начале файла cron.php. Не факт, что поможет 😊
Лучше воспользоваться 1-м вариантом.
#10 23 августа 2016 в 08:51
За wget нас сейчас Fuze наругает.

ИМХО все-таки
  1. if(!$_SERVER['DOCUMENT_ROOT'] ){
  2. $_SERVER['DOCUMENT_ROOT'] = 'my_domen.ru';
  3. }
И так же внаглую определить остальные переменные окружения, которые используются в скрипте.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.