Может есть какая-то функция закрытия запроса и процесс будет висеть пока MySQL не закончит?
А какая разница, запаралеллится другой процесс PHP, пока тот будет висеть занимая пул, откроет новое соединение и сделает то же самое. Вы же не думаете, что PHP обрабатывает всех клиентов в 1 поток/скрипт? Пишите лог запросов, которые выполняются и будем разбираться, от чего именно такой порядок запросов, а а не какой-то другой.
А вообще, в MySQL есть транзакции и блокировки, которые как раз защищают от таких случаев, когда кто-то что-то куда-то не успел, или не записал или... Попробуйте использовать их. Главное, не забудьте, что все операции записи/обновления должны проходить в одной транзакции, тогда подобных проблем не возникнет с вероятностью близкой к абсолюту.