Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapisywanie pliku (np. xml) a wielu użytkowników
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Witam serdecznie,
dziś chciałem zapytać o blokady lub ograniczenia w zapisie pliku, który powiedzmy może być zapisywany w tym samym czasie przez wiele osób - klientów przeglądarek. Czy przed np. błędnym zapisem lub pominięciem jakiegoś zapisu można się jakoś ochronić biorąc pod uwagę jeden plik?

Przyjmijmy, że mam taki wycinek, który zapisuje xml, ale żeby ten xml jeszcze "upiększyć" dodatkowo po zapisie robi pewną funkcję:

  1. function formatXml($simpleXMLElement) {
  2. $xmlDocument = new DOMDocument('1.0', 'utf-8');
  3. $xmlDocument -> preserveWhiteSpace = false;
  4. $xmlDocument -> formatOutput = true;
  5. $xmlDocument -> loadXML($simpleXMLElement -> asXML());
  6. return $xmlDocument -> saveXML();
  7. }
  8.  
  9. ...
  10.  
  11. $newUser -> asXML($pathToUsersFile);
  12.  
  13. $beautifyXML = htmlspecialchars(formatXml($usersFile));
  14. $beautifyXML = html_entity_decode($beautifyXML);
  15. $beautyFile = fopen($pathToUsersFile, 'w');
  16. flock($beautyFile, LOCK_EX); // lub LOCK_SH dla blokady dzielonej
  17. fwrite($beautyFile, $beautifyXML);
  18. flock($beautyFile, LOCK_UN);
  19. fclose($beautyFile);
  20. ...


tylko pytanie co w momencie gdy np 100, 1000, 100000 userów w jednym czasie zainicjuje ten kod? Czy asXML (saveXML) kolejkuje wtedy jakoś? Czy lock i unlock również kolejkuje przy blokadzie dzilonej (SH) czy po prostyu w momencie kiedy plik jest w użyciu/zapisywany - to innego w tym samym czasie usera po prostu ominie..?

@EDIT

Dziękuję za zainteresowanie....

Ten post edytował shpaque 8.05.2020, 12:36:49
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:30