Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.10.2015, 20:27
Аспирант
Отправить личное сообщение для guru_nemo Посмотреть профиль Найти все сообщения от guru_nemo
 
Регистрация: 07.07.2015
Сообщений: 37

Работа php скриптов с xml файлом
Вопрос в следующем.
На сервере есть скрипт php который делает записи в xml файл. Есть и другие скрипты php которые тоже запрашивают этот же файл xml.
В какой последовательности работают с файлом xml скрипты? т.е. когда запросил его один скрипт и вносит в него изменения и в этот момент приходит запрос от другого скрипта. Второй запрос будет выполнен, только после того, как первый скрипт закончит работу с xml файлом?
это разруливает сам сервер или надо это как-то дополнительно указывать?
Ответить с цитированием
  #2 (permalink)  
Старый 01.10.2015, 22:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если скрипт не блокирует доступ к файлу, то он доступе любому, РНР автоматом не ставит блокировку на файлы. Блокировка устанавливается при сохранении в файл функцией file_put_contents().
Ответить с цитированием
  #3 (permalink)  
Старый 02.10.2015, 10:45
Аспирант
Отправить личное сообщение для guru_nemo Посмотреть профиль Найти все сообщения от guru_nemo
 
Регистрация: 07.07.2015
Сообщений: 37

т.е. надо в скрипте прописать, что когда он запрашивает xml файл, то он должен его блокировать для остальных обращений? а потом сделав изменения опять разблокировать?
а другие скрипты при обращении в этот момент получают ошибку?
Ответить с цитированием
  #4 (permalink)  
Старый 02.10.2015, 11:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

Последний раз редактировалось laimas, 02.10.2015 в 11:40.
Ответить с цитированием
  #5 (permalink)  
Старый 02.10.2015, 12:22
Аспирант
Отправить личное сообщение для guru_nemo Посмотреть профиль Найти все сообщения от guru_nemo
 
Регистрация: 07.07.2015
Сообщений: 37

друтие скрипты это значит, что один скрипт заносит запись в xml файл, а другой может в это время его читать.
а каким образом блокируются файлы с многопользовательским доступом на запись?
Ответить с цитированием
  #6 (permalink)  
Старый 02.10.2015, 12:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Читать будут, вам ведь нужна блокировка на запись - LOCK_EX.
Ответить с цитированием
  #7 (permalink)  
Старый 02.10.2015, 13:04
Аспирант
Отправить личное сообщение для guru_nemo Посмотреть профиль Найти все сообщения от guru_nemo
 
Регистрация: 07.07.2015
Сообщений: 37

есть xml файл в который записываются сообщения, пользователей. делает это один и тот же скрипт. вопрос, что будет, если один вносит запись, и в это время тоже самое пытается сделать ещё кто-то?
Ответить с цитированием
  #8 (permalink)  
Старый 02.10.2015, 13:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Блокировка на запись предотвращает одновременную запись. Хотите нормальной блокировки - база данных, в нее нельзя записать одновременно, но кроме этого можно установить блокировки на доступ и на время, хотя это делать это нужно в разумных пределах.
С файлами обеспечить такую гибкость сложно, если не написать самому механизм ее обеспечивающий.
Ответить с цитированием
  #9 (permalink)  
Старый 02.10.2015, 14:59
Аспирант
Отправить личное сообщение для guru_nemo Посмотреть профиль Найти все сообщения от guru_nemo
 
Регистрация: 07.07.2015
Сообщений: 37

я думал, что такие ситуации разруливает сервер. Типа как операционная система компа. Спасибо за ответы.
Ответить с цитированием
  #10 (permalink)  
Старый 02.10.2015, 15:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

С базой надо работать, а не с файлами, она обеспечивает механизм многопользовательского доступа, устанавливая блокировки где требуется, что обеспечивает целостность данных.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с xml Phenix Общие вопросы Javascript 3 03.04.2013 12:16
Работа с XML локально, кроссбраузерно... Как бы вы это делали? oyaebunterkrah Общие вопросы Javascript 22 10.06.2012 02:58
Поиск элементов по DOM-дереву и работа с XML и XSLT mister_maxim Events/DOM/Window 1 13.03.2011 19:41
Как добавить элемент в XML через DOM используя PHP? bayah Серверные языки и технологии 6 11.08.2010 13:33
Не получается загрузить xml из php Alekson jQuery 2 08.07.2009 09:33