PHP читать и писать из файла одновременно - PullRequest
2 голосов
/ 02 августа 2011

В основном у меня есть XML-файл для заполнения данными, и у меня будет cron ( в PHP ), который обновляет его каждые 5 минут.Но в то же время у меня будут пользователи, которые будут обращаться к этому файлу постоянно (а я говорю о тысячах пользователей).

Когда я сам попробовал скрипт, написав 2 миллиона строк текста в текстовом файле.и читая его в то же самое время, конечно, file_get_contents() получал текущий текст в файле .txt и не ждал, пока он закончится и получит содержимое, когда оно будет завершено.Итак, я сделал запись во временный файл, а затем переименовал его в исходный файл .txt.Процесс переименования на моем ПК занимает 0,003 секунды (рассчитывается с использованием microtime()).

Считаете ли вы, что это подходящее решение, или найдутся пользователи, которые в итоге получат ошибку, что файл не существует

1 Ответ

2 голосов
/ 02 августа 2011

Конечно, это не подходит. Вы должны заблокировать файл в течение 0,003 микросекунд.

Очень простой способ - флаг

Например, создать файл с именем isReplacing

После завершения замены, удалить файл isReplacing

Когда пользователь хочет, чтобы файл произнес в getfile.php


 while(file_exists("isReplacing"))
 {}
 //NOW echo file_get_contents()

 //BETTER:
 if(file_exists("isReplacing"))
 {
      //GET DATA FROM DATABASE
 }
 else
 {
      //ECHO THE FILE
 }

ПРИМЕЧАНИЕ это тупой путь, но я просто хочу продемонстрировать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...