Прочтите несколько текстов о блокировках в 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") изменен, и загрузит новый. Правильный?