Недавно я столкнулся с проблемой в реальном приложении. Я понял, что у меня есть все больше и больше concurrency исключений и блокировок с базой данных.
В основном я запускаю транзакцию, для которой требуется зафиксировать SELECT
и INSERT
в той же таблице.
Но поскольку загрузка действительно тяжелая, каждая транзакция блокирует таблицу, в большинстве случаев она так быстро не вызывает никаких проблем, но есть точка, где блокировки начинают все больше и больше ждать.
Я смог немного исправить эту проблему, настроив запросы.
Хотя, теперь, я бы хотел написать несколько тестов с PHPUnit, чтобы проверить мое исправление и избежать любых регрессий.
Я не смог найти никаких материалов о том, как это сделать.
Поскольку PHP не многопоточен, у меня нет идей, как я могу запускать параллельные запросы в одном тесте для проверки.
В принципе, я хотел бы иметь возможность запускать несколько вызовов в одном тесте, чтобы все было в порядке.
Я знаю, что могу попытаться выполнить некоторые тесты высокого уровня, напрямую обратившись к серверу http и загрузив все приложение, но поскольку моя проблема возникает из автономной библиотеки, я бы предпочел проверить ее на себя.
Любые идеи?