Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] flock x3
Forum PHP.pl > Forum > Przedszkole
Coolmax
Mam kilka zmiennych, które są zapisywane do 3 różnych plików. Zapewne zakładanie i zdejmowanie blokady dla każdej z nich osobno mogło by się skwitować tym, że do pliku mogły by się dodać dwa takie same rekordy.

1. Czy optymalnym spsobem byłby taki kod:
  1. <?php
  2. if(flock($op, LOCK_EX) || flock($loginop, LOCK_EX) || flock($emailop, LOCK_EX) || flock($mainop, LOCK_EX)) {
  3. //
  4. //
  5. flock($op, LOCK_UN);
  6. flock($loginop, LOCK_UN);
  7. flock($emailop, LOCK_UN);
  8. flock($mainop, LOCK_UN);
  9. }
  10. ?>


2. A po else... no właśnie czytałem tą stronę, ale nie wiem co zrobić, aby (zapewne) pętla wykonywała się tyle razy, aż wszystkie blokady zostaną zwolnione i skrypt wykona to co w jest w if'ie. Nawet nie wiem jak taką pętle "ugryźć"...
piczu
nie wiem czy dobrze rozkminiam ten temat, ale moze taka funkcja by byla dobra:
  1. <?php
  2. function fmustlock($file_ptr) {
  3. if (flock($file_ptr,LOCK_EX)) return true;
  4. else return fmustlock($file_ptr);
  5. return false;
  6. }
  7. ?>

i wtedy tylko
  1. <?php
  2. if(fmustlock($plik1) && fmustlock($plik2)) {
  3. // ...
  4. }
  5. ?>


PS. jezeli funkcja za szybko bedzie sie zapetlac to mozna dodac sleep
Coolmax
A co z while" title="Zobacz w manualu php" target="_manual?
Cytat
Nakazuje ona php tyle razy wykonywać określone instrukcje, jak długo wyrażenie przy słowie while ma wartość TRUE.
Funkcja flock zwraca True w przypadku załozenia blokady. A więc poniższy kod będzie działał?
  1. <?php
  2. while (flock($op, LOCK_EX) || flock($loginop, LOCK_EX) || flock($emailop, LOCK_EX) || flock($mainop, LOCK_EX) )
  3. ?>
Cienki jestem z logiki. Wcześniej nie miałem tak dużo do czynienia z while...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.