Не правильное выполнение Cron

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

...запись добавляется с пустым значением поля SLUG

#1 25 августа 2021 в 11:12

Всем привет!

Есть cron задача, которая по расписанию добавляет контент с помощью функции:

  1. addContentItem()

Если запустить задачу планировщика вручную, запись добавляется без проблем, но если планировщик запускается самостоятельно по времени, то запись добавляется с пустым значением поля SLUG. Не могу понять в чем проблема? Подскажите что проверить!

#2 25 августа 2021 в 13:01

Попробуйте включить отладку и перенаправить вывод от выполнения cron.php не в /dev/nul, а, например в cron.txt c правами 777, чтоб наверняка. Смотрите, может в cron.txt у вас будут ошибки.

#3 25 августа 2021 в 13:21

Если запустить задачу планировщика вручную, запись добавляется без проблем, но если планировщик запускается самостоятельно по времени, то запись добавляется с пустым значением поля SLUG

Вадим Нарочный

Когда Вы запускаете задание хрона вручную — оно выполняется от имени владельца сайта и с той версией php, на которой работает сайт.

А когда оно выполняется по расписанию — оно выполняется черт знает от чьего имени и с той версией php, которая прописана в строке запуска.

И тут есть вариант, что версии php разные. Я уже видел такое.

Покажите вашу строку запуска хрона.

У меня, например, она выглядит так:

*/5 * * * * /opt/php74/bin/php -f /var/www/*******.ru/data/www/*******.ru/cron.php *******.ru > /dev/null #Запуск планировщика

То есть /opt/php74/bin/php — путь к файлу php от которого работает хрон.

#4 25 августа 2021 в 13:25

Покажите вашу строку запуска хрона.

Ris

*/1 * * * *  /home/httpd/fcgi-bin/*******/php-cli /home/httpd/vhosts/*******.ru/httpdocs/cron.php

#5 25 августа 2021 в 13:28

*/1 * * * *  /home/httpd/fcgi-bin/*******/php-cli /home/httpd/vhosts/*******.ru/httpdocs/cron.php

Вадим Нарочный

А это вообще может работать?

#6 25 августа 2021 в 14:00

А это вообще может работать?

IamB

Хостинг mchost.ru. Сделал по их иснтрукции. Работает, команды в Планировщике в ПУ выполняются)

У крона возникает ошибка

  1. PHP Warning: array_merge(): Expected parameter 2 to be an array, bool given in /home/httpd/vhosts/*****.me/httpdocs/system/controllers/content/model.php on line 1184

Строка 1184

  1. $item = array_merge($item, $this->getContentItem($ctype['name'], $item['id']));

Как раз где формируется slug. Но что ему не нравится?

#7 25 августа 2021 в 14:15

Но что ему не нравится?

Вадим Нарочный

То, что пока контент не добавлен, у него нет никакого $item['id']. Оно появляется только после добавления в базу.

А можно посмотреть, как выглядит целиком скрипт добавления контента по расписанию?

#8 25 августа 2021 в 14:21

То, что пока контент не добавлен, у него нет никакого $item['id'].

Ris

НУ как это. Строка выше

  1. $item['id'] = $this->insert($table_name, $item);

добавляет запись и получает ID

А можно посмотреть, как выглядит целиком скрипт добавления контента по расписанию?

Ris

Для чего? Проблема возникает в другом месте, и тем более при вызове планировщика. Значит код рабочий!

#9 25 августа 2021 в 14:26

 Вадим Нарочный, а какая версия PHP у /home/httpd/fcgi-bin/*******/php-cli ?

#10 25 августа 2021 в 14:28

а какая версия PHP у /home/httpd/fcgi-bin/*******/php-cli ?

IamB

Пробовал 7.1, 7.2, 7.3. Сейчас 7.3 стоит

#11 25 августа 2021 в 14:31

Пробовал 7.1, 7.2, 7.3. Сейчас 7.3 стоит

Вадим Нарочный

Версия, которую вы выставляете для сайта в ПУ — это одно, а в /home/httpd/fcgi-bin/*******/php-cli у вас может быть 5.4

#12 25 августа 2021 в 14:36

Версия, которую вы выставляете для сайта в ПУ — это одно, а в /home/httpd/fcgi-bin/*******/php-cli у вас может быть 5.4

IamB

Какая версия для сайта установлена, такая и у Планировщика. Ответ ТП хостинга!

#13 25 августа 2021 в 14:40

Ответ ТП хостинга!

Вадим Нарочный

Я бы сам проверил, не известно кто там сидит.

#14 25 августа 2021 в 14:43

Я бы сам проверил, не известно кто там сидит.

IamB

Как проверить?

#15 25 августа 2021 в 14:57

Создайте файл v.php в корне сайта

  1. <?php
  2. echo phpversion();

В cron создайте задание

  1. /home/httpd/fcgi-bin/*******/php-cli /home/httpd/vhosts/*******.ru/httpdocs/v.php >> /home/httpd/vhosts/*******.ru/httpdocs/v.txt

Смотрите, что будет в v.txt

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.