2014-02-19 6 views
1

Недавно я сделал программу PHP для подсчета количества пользователей в сети, используя созданную мной программу. Вот как это работает:PHP делает пустой файл, когда я пытаюсь увеличить свою переменную?

  1. Клиент посылает запрос на сервер регистра (registerMember.php)
  2. сервер проверяет, является ли пользователь уже в сети
  3. Если пользователь уже не в Интернете, увеличивает число в файл
  4. Написать имя лиц в текстовый файл

Моя проблема заключается в том, что многие люди будут регистрироваться в то же время, и что бы создать пустой файл.

$file_handle = fopen("registeredMembers", "r"); 
    while (!feof($file_handle)) { 
     $line = fgets($file_handle); 
     $line++; 
     $fp = fopen('registeredMembers', 'w'); 
     fwrite($fp, $line); 
     fclose($fp); 
    } 

Это происходит потому, что есть два запрос происходит одновременно, и до того, как программа записывает измененную версию переменного, другой запрос прочитал пустой файл перед записью. Есть ли лучший способ, которым я мог бы это сделать? Любая помощь будет принята с благодарностью!

+0

Приветствуем вас на сайте! Отличная работа в выражении вашего первого вопроса. –

ответ

3

Попробуйте заблокировать файл с помощью flock после его открытия (см. Пример внутри).

Смежные вопросы