Прочитайте некоторые тексты о блокировке в PHP.
Все они, в основном, направлены на http://php.net/manual/en/function.flock.php.
На этой странице рассказывается об открытии файла на жестком диске !!
Это действительно так? Я имею в виду, что это делает блокировку действительно дорогой - это означает, что каждый раз, когда я хочу заблокировать, мне нужно получить доступ к жесткому диску) =
Может ли я еще успокоить меня восхитительными новостями?
Изменить:
Из-за некоторых ответов, которые я получил здесь, я хочу спросить это;
Мой скрипт будет запускаться только одним потоком или несколькими? Потому что если это один, то мне явно не нужен мьютекс. Есть краткий ответ?
Что именно я пытаюсь сделать
На вопрос ircmaxell.
Это история:
У меня есть два ftp-сервера. Я хочу показать на своем веб-сайте, сколько пользователей онлайн.
Итак, я подумал, что эти ftp-серверы «отправят» свою статистику на определенную страницу скрипта PHP. Предположим, что URL этой страницы "http://mydomain.com/update.php".
На главной странице сайта ("http://mydomain.com/index.php") я буду отображать совокупную статистику (пользователи онлайн).
Вот и все.
Моя проблема в том, что я не уверен, что если один ftp-сервер обновляет свою статистику, а другой тоже делает это, информация будет смешанной.
Как при многопоточности; Два потока увеличивают некоторую переменную int одновременно. Это не произойдет, как ожидалось, если вы не синхронизируете их.
Итак, у меня будут проблемы? Да, нет, может быть?
Возможное решение
Тяжело думая об этом весь день, у меня есть идея, и я хочу, чтобы вы высказали свое мнение.
Как уже говорилось, эти ftp-серверы будут публиковать свою статистику каждые 60 секунд.
Я думаю о том, чтобы иметь этот файл "stats.php".
Он будет включен в скрипт обновления, на который идут ftp-серверы («update.php»), и на страницу «index.php», где посетители видят, сколько пользователей в сети.
Теперь, когда сервер ftp обновляется, скрипт на «update.php» изменит «stats.php» с новой накопительной статистикой.
Сначала он будет читать статистику, включенную в "stats.php", затем накапливать и затем переписывать этот файл.
Если я не ошибаюсь, PHP обнаружит, что файл ("stats.php") изменен, и загрузит новый. Правильно?