начать транзакцию, заблокировать эксклюзивно таблицу, выполнить операции, зафиксировать транзакцию
https://dev.mysql.com/doc/refman/8.0/en/lock-table...
Все автоматом встанут в очередь и будут выполняться по мере отпускания блокировки предыдущим участником. При таймауте блокировки будет ошибка, так что имеет смысл его значение установить до максимального времени выполнения скрипта php, да и само время выполнения увеличить, если оно не достаточно.
В принципе, блокировка и ожидание на ней будут только на время транзакции, что должно быть сильно меньше общего времени выполнения скрипта