Даже если запрос сделан из новой вкладки тем же пользователем, веб-сервер запускает новый поток. (Это, вообще говоря. Хотя некоторые воображаемые серверы могут выполнять их в очереди в одном потоке, но обычно они являются многопоточными и не заботятся о пользователях). Таким образом, запросы выполняются одновременно.
Вы несете ответственность запозаботься о синхронизации. Итак, хотя php является однопоточным языком, при написании скрипта всегда имейте в виду, что другой экземпляр или ваш скрипт могут работать параллельно.
Например, если скрипты читают и пишут из / в файлы,они должны блокировать файлы. (См. flock )
Когда выполняются запросы к базе данных, они должны выполняться в транзакциях. (См., Например, START TRANSACTION, ROLLBACK, COMMIT , а также SELECT ... FOR UPDATE ).
Т.е. в примере с платежами может быть что-то вроде
START TRANSACTION; -- starts the transaction
SELECT needed, data FROM table_with_payments FOR UPDATE;
-- any other script selecting these rows will be locked until this one release the transaction
UPDATE table_with_payments WHERE this = that ... ; -- update
COMMIT; -- ends transaction, applying all the changes at once