/**действие при определенном статусе*/
public function action_concrete_status(): void
{
$successful = $this->adapter()->successful_transaction(); //узнаем успешна ли транзакция
$user_id = $this->adapter()->user_id(); //получаем ид пользователя который совершил транзакцию
if ($successful and $user_id !== 0) { //если удачна и ид не равен 0 то все ок идем дальше
sleep(0.5); //баг системы.
/**@var PaymentsMultiViaVtiger $rec */
$rec = PaymentsMultiViaVtiger::find()
->where(['paymentsmulti_id' => $this->adapter()->transaction_id()])
->one(); //ищем эту транзакцию в базе данных (и информацию по ней)
if ($rec) {//если нашли
if ($rec->vtiger_record->transaction_approval != 'Approved') { //проверяем зачислялась ли ранее эта транзакция
$this->add_to_cash(); //если нет то зачисляем денежные средства на счет.
}
$rec->vtiger_record->transaction_approval = 'Approved'; //устанавливаем статус аппрув
if ($this->adapter()->card_num()) { //если имеем номер карты
$rec->vtiger_record->payments_type = $this->adapter()->card_num(); //сохраняем номер карты
}
$rec->vtiger_record->amount = $this->adapter()->amount(); //записываем сумму транзакции
$rec->vtiger_record->updated_time = (new DateTime())->format('Y-m-d H:i:s');//время обновления
$rec->vtiger_record->save();//сохраняем
$rec->vtiger_record->refresh();
sleep(0.5); //баг системы.
}
} else {
$this->external->action_concrete_status(); //если транзакция не успешна или ид пользователя равен 0 то выполняем следующее действие в алгоритме.
}
}
проблема в том что если убрать sleep(0.5) то данные не сохраняются.
но если добавить то все работает.
При этом код не фэйлится. и ошибок не возникает.
написал YII т.к. пользуюсь этим фреймворком и сохраняю через его AR (может быть в этом проблема?)