Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] flock x3
Coolmax
post
Post #1





Grupa: Zarejestrowani
Postów: 168
Pomógł: 0
Dołączył: 12.11.2005
Skąd: Bulowice nearby Wadowice (E), Oświęcim (W)

Ostrzeżenie: (0%)
-----


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źć"...


--------------------
Go to the top of the page
+Quote Post
piczu
post
Post #2





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 4.01.2005
Skąd: piczu.info

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


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

Ten post edytował piczu 25.07.2006, 01:00:29


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
Coolmax
post
Post #3





Grupa: Zarejestrowani
Postów: 168
Pomógł: 0
Dołączył: 12.11.2005
Skąd: Bulowice nearby Wadowice (E), Oświęcim (W)

Ostrzeżenie: (0%)
-----


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...


--------------------
Go to the top of the page
+Quote Post

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 - 00:40