Я в основном знаком с Java, C и C ++, в которых есть способы контролировать, что только один поток обращается к ресурсу в любой момент времени. Сейчас я ищу что-то похожее, но в PHP 5.x.
Чтобы сформулировать мою проблему на одном примере:
У меня есть ASCII-файл, в котором хранится только число, значение счетчика загрузки страницы. При развертывании приложения файл будет просто содержать 0. Для каждого доступа значение будет увеличиваться на единицу. Цель состоит в том, чтобы отслеживать загрузку страниц.
Проблема возникает, когда многие пользователи одновременно получают доступ к странице, содержащей счетчик. Когда поток A прочитал текущее значение, скажем, 11, другой поток, который мы называем B, читает значение, все еще 11. Затем первый поток A увеличивает значение чтения и записывает 12 в файл и закрывает его. Затем второй поток B увеличивает значение чтения, равное 11, получает 12 и записывает это в файл. Значение 12 сохраняется в файле, когда оно действительно должно быть 13.
На другом языке программирования я бы решил это, используя мьютекс. Я понимаю, что в состав модулей входят мьютексы, разделяемая память и другая функциональность. Но я хотел бы получить решение, которое работает на «большинстве серверов». Независимая платформа. Устанавливается на самых дешевых веб-хостах. Есть ли хорошее решение этой проблемы? И если нет, то какой путь вы бы выбрали, если использование базы данных не вариант ?