PHP/SQL (MARIADB) - Транзакция с самостоятельным инстанцирациейPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 PHP/SQL (MARIADB) - Транзакция с самостоятельным инстанцирацией

Сообщение Anonymous »

У меня есть метод, который убивает персонажа, и если этот персонаж женат на другого персонажа, он также убивает их. < /p>
public function kill(string $reason): void
{
$this->update(array(
'character_status' => "Dead",
'character_death_reason' => $reason
));

// To ensure it doesn't make an infinite loop.
if($this->isMarried() && $reason != "wedding") {
$husband = $this->getHusband();
$husband->kill('wedding');
}
}
< /code>
Этот метод вызывается в коде, 300 строк после начала транзакции, но может быть возобновлено точно так: < /p>
// For context, every Character() belong to a City(), and I'm doing a transaction per City.
$city->beginTransaction();

[...]

foreach($characterAlive as $character) {
$character->kill('because_i_want_to');
}

[...]

$city->commitTransaction();
< /code>
работает для каждого персонажа в живых. Но если у персонажа есть муж, транзакция идет на «Заблокированную таблицу». Проблема: < /p>

Ошибка: SQLState [Hy000]: общая ошибка: 1205 Тайм -аут ожидания блокировки; Попробуйте перезапустить транзакцию.

Все мои заинтересованные таблицы находятся в innodb конфигурации хранения, и я использую singleton . Когда я действую в разных рядах (характер_id, являющийся моим основным ключом a_i), я не понимаю, почему он работает на Foreach, но не в том случае, если класс символов создает еще один класс символов.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... tanciation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»