Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [klasa] Planowanie zadań (kolejka) PHP5
Ziels
post
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

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


Witam!

Napisałem klasę do planowania zadań - przydaje się kiedy np. mamy kilka warunków i w każdym musielibyśmy pisać ten sam kod bo jest w nich np. coś definiowane.

Kod jest tutaj

Użycie bajecznie proste:

  1. <?
  2. $queue = new queue( 1 ); //Jeśli podamy 1 to zostaje włączony tryb debugowania - wyświetlane są wszystkie komunikaty co robi klasa
  3.  $queue -> add ( "somefunc( '$arg1', '$arg2' )" ); // wsadzenie funkcji do kolejki
  4.  $queue -> add ( array($object, "someclassmethod('$arg1', '$arg2')" ); // analogicznie z metodą klasy
  5. $pos = $queue -> get_element_position ( "somefunc( '$arg1', '$arg2' )" ); // pobranie pozycji elementu z kolejki
  6. $queue -> remove($pos);  //wywalenie elementu z kolejki
  7. $queue -> run(); // odpalenie kolejki
  8. $queue -> clean(); // wyczyszczenie kolejki
  9. ?>


Można oczywiście manipulować kolejką, zmieniać pozycje elementów, czyścić ją etc. etc.

Jeśli okaże się przydatne i ciepło przyjęte to rozszerzę nieco opis możliwości winksmiley.jpg

Update:
OK, poprawiłem nazwy metod i rzutowanie z (real) na (int).
W najbliższym czasie dopiszę do tej klasy możliwość importowania kolejek z plików, oraz wykonywania zadań tylko o określonej godzinie bądź w przedziale czasowym, lub też jakąś ilość czasu od poprzedniego wykonania - idealne dla crona np. jeśli mamy plik odświeżany co 5 sekund a chcemy coś robić co pół godziny winksmiley.jpg

Ten post edytował Ziels 17.01.2007, 08:06:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
sticker
post
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


może sie czepiam ale :

zamieniłbym
*
  1. <?php
  2. $queue -> enqueue
  3. ?>
na
  1. <?php
  2. $queue -> add
  3. ?>

*
  1. <?php
  2. $queue -> dequeue
  3. ?>
na
  1. <?php
  2. $queue -> remove
  3. ?>
tak bardziej intuicyjne

i zajrzałem do kodu na szybkiego: (w php5 nie pisuje wiec popraw jeżeli sie myle)
* real to liczba rzeczywista a ty chcesz inta wiec lepiej zrobić rzutowanie na integer bo tak to spodziewasz sie że będzie tam liczba zmiennoprzecinkowa
  1. <?php
  2. $this -> max_elems = (real)$elements_number;
  3. ?>



* praktyka programistyczne mowi że lepiej przeorganizować taki kod do postaci: (pomijasz mozliwosc pogubienia sie w blokach)
  1. <?php
  2. public function set_max_elems( $elements_number ){
  3. if(! $elements_number > 0) return false;
  4. $this -> max_elems = (real)$elements_number;
  5. $this -> debug_message('Ustawiono maksymalną liczbę elementów na: ' . $elements_number);
  6. return true;
  7. }
  8. ?>


Poza tym może sie przydac kiedyś tylko jeszcze nie znalazłem zastosowania na potrzeby www ale pewnie takie sie znajdą smile.gif Abo coś wymyśle

btw. debug mi sie podoba smile.gif


--------------------
Go to the top of the page
+Quote Post
cadavre
post
Post #3





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


Zależnie od tego co komu potrzebne.

Ja zamiast powyższej metody kolejkowania używam klasy Collection (plus naturalnie CollectionIterator) wraz z funkcjami zwrotnymi.


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
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: 20.08.2025 - 12:03