Sieciowy framework zadań Gearman i PHP
11 October 2009
Comments
Gearman to framework aplikacyjny do zarządzania farmą zadań rozdzielanych na inne maszyny lub procesy lepiej przystosowane do wykonania określonej czynności. Np. aplikacja www może zlecić zadanie wygenerowania szeregu miniatur dla nadesłanych przez użytkownika grafik. Gearman umożliwia równoległe wykonywanie różnych zadań, rozkład wykonywanych zadań na różne serwery (load balancing), jak wywoływanie funkcji napisanych w różnych językach programistycznych.
- Projekt OpenSource
- "Wielojęzyczność" - posiada API dla wielu języków programistycznych
- Szybkość - Gearman ma prosty protokół i interfejs z serwerem napisanym w C
- Stworzony przez Danga Interactive na potrzeby LiveJournal, obecnie używany także np. na Digg.com
Jak to działa?
Aplikacja oparta o Gearmana składa się z trzech części: klienta, pracownika i serwera prac. Klient odpowiedzialny jest za tworzenie prac do wykonania i za wysłanie ich na serwer. Serwer prac znajdzie odpowiedzialnego pracownika, który może wykonać daną pracę i zwrócić wynik do klienta poprzez serwer. Zobacz także Gearmana w Pythonie.![](/site_media/resources/python.rk.edu.pl/images/gearman1.png)
Instalacja Gearman
- Pobieramy źródła (Gearman server and library) lub szukamy pakietów w repozytoriach naszej dystrybucji.
- W przypadku źródeł kompilacja to standardowe ./configure, make i make install
- Dla PHP istnieje binarne rozszerzenie na pecl.php.net, które kompilujemy standardowo:
phpize ./configure make make install
- Do php.ini dodaj:
extension=gearman.so;
Przykładowy skrypt
Oto prosty kod pracownika:<?php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("reverse", "my_reverse_function");
while ($worker->work());
function my_reverse_function($job)
{
return strrev($job->workload());
}
<?php
$client= new GearmanClient();
$client->addServer();
print $client->do("reverse", "Hello World!");
- Odpal serwer gearmand:
gearmand -vv
- Odpal skrypt pracownika (będzie działała ciągle) - php nazwa_pliku.php
- Wykonaj skrypt klienta zlecający zadanie - zwrócony zostanie wynik działania pracownika.
RkBlog
Comment article