Почему при запуске cron вручную запрос срабатывает, а в автомате нет?

Главные вкладки

Аватар пользователя pingvin156 pingvin156 16 сентября 2017 в 1:10

Странная проблема. При запуске крона по расписанию запрос не работает, а если запустить вручную, то всё норм. С чем это мб связано?

<?php
$query 
= \Drupal::database()->update('TABLE');
                    
$query->fields(['FIELD' => 1]);
                    
$query->condition('ID'$ID);
                    
$query->execute();
?>

Комментарии

Аватар пользователя pingvin156 pingvin156 16 сентября 2017 в 7:35

Крон выполняется. В том и проблема. У меня рассылаются письма. После рассылки ставится этот флажок, что рассылка выполнена. Сами письма уходят, но update не срабатывает, если ставить его после рассылки письма. Если поставить "до", то всё норм. Ошибок при отправке писем нет, т.е. код по идее должен выполняться...

Аватар пользователя pingvin156 pingvin156 16 сентября 2017 в 13:09
<?php$uss = db_query("ЦИКЛ ПО ПОЛЬЗОВАТЕЛЯМ");
    foreach ($uss as $us) {
        $MailSend = false;
        if ($us->IDUser != null) { // для зарегистрированных пользователей
            $MailSend = SendMail($us->IDUser, 'NotificationA');
        } else {
            $params = [];
            $MailSend = SendMailTo('NotificationB', $us->sMail, $us->sName, $us->sSurname, $params);
        }

        if ($MailSend) {
                    $query = \Drupal::database()->update('TABLE');
                    $query->fields(['FIELD' => 1]);
                    $query->condition('ID', $ID);
                    $query->execute();
        }
    }?>

Функции SendMail и SendMailTo отсылают письма и возвращают true при успехе. При тесте всегда true было, но даже если убрать условие «if ($MailSend) {» все равно не срабатывает запрос на обновление. Работает, если обновление поставить перед отсылкой письма.
В ручном режиме все работает