Странная проблема. При запуске крона по расписанию запрос не работает, а если запустить вручную, то всё норм. С чем это мб связано?
<?php
$query = \Drupal::database()->update('TABLE');
$query->fields(['FIELD' => 1]);
$query->condition('ID', $ID);
$query->execute();
?>
Комментарии
Если крон не выполняется по расписанию надо настроить crontab на сервере.
Крон выполняется. В том и проблема. У меня рассылаются письма. После рассылки ставится этот флажок, что рассылка выполнена. Сами письма уходят, но update не срабатывает, если ставить его после рассылки письма. Если поставить "до", то всё норм. Ошибок при отправке писем нет, т.е. код по идее должен выполняться...
Код - в студию.
<?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) {» все равно не срабатывает запрос на обновление. Работает, если обновление поставить перед отсылкой письма.
В ручном режиме все работает
Неужели ни у кого нет идей? Перестал работать другой аналогичный блок.