![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
<?php require_once ('Daemon.class.php'); require_once ('TestDaemon.class.php'); $Daemon = new TestDaemon(); $Daemon->start(); ?>
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
ja odnosnie etapów.
Cytat * Rozwidlic procesy - utworzyc proces dziecka (fork), a proces rodzica zamknac. A przed tym zamknac jakiekolwiek polaczenia do pliku gdyz moze to prowadzic co nadpisania danych procesu rodzica lub dziecka. Nigdy nie zajmowalem sie tym wczesniej, wiec zastanawiam sie po co ? demon nie moglby dzialac w petli i poprostu sprawdzac czy jest cos 'todo' ? no chyba ze to jest jakas forma zapewnienia wielowątkowosci? dlaczego wiec zamykac proces rodzica? Co do wykozystania... pierwsze na mysl przyszlo mi 'cron', na podstawie tej klasy mozna by napisac alternatywe crona. drugie o czym pomyslalem to implementacja pod windowsami. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Jak najbardziej mogl by dzialac w petli (zreszta i tak i tak dziala
![]() Teraz zamykamy proces rodzica, przez co odlaczamy sie od konsoli i mozemy - my jako user - korzystac z konsoli. Tymczasem nadal dziala sobie kopia (dziecko) naszego demona - w tle. Na liscie procesow wygladalo by to mniej wiecej tak: 1) Start programu Kod Nr. PID Nazwa 21432 Demon 2) Rozdzielamy procesy (fork) Kod Nr. PID Nazwa 21432 Demon | \---- 21438 Demon(dziecko) 3) Zamykamy rodzica Kod Nr. PID Nazwa | \---- 21438 Demon(dziecko) 4) Teraz musimy ustawic dziecko na session leadera Kod Nr. PID Nazwa 21438 Demon(dziecko) Teraz co do konsoli: w pkt. 2 Demon z PIDem 21432 ma dostep do konsoli, a 21438 juz nie. W tym momencie mamy zajeta konsole i nie mozemy wykonywac zadnych polecen. W pkt 3 mamy juz zwolniona konsole i mozemy z niej korzystac a nadal mamy dzialajacego demona w tle. Do tego mozemy kontrolowac demona za pomoca sygnalow np: Kod kill SIGTERM [nr pid] --------------------------------------------------[ edit ] Co do implementacji pod Windowsa to niestety nie jest to mozliwe uzywajac standardowych rozszezen php. Mozna by napisac handlera serwisu Windowsowego w innym jezyku, ktory by korzystal z php ale jest to za duzo zachodu. Jest jednak nadzieja ![]() Rozszezenie win32service napisany przez Weza Furlonga, ktore znajduje sie w zbiorze rozszezen PECL php: http://snaps.php.net/win32/PECL_5_0/ Dziala co prawda tylko pod php 5 ale raczej nie bedzie to wielkim problemem ![]() Patrzac na przyklad uzycia tego rozszezenia mozna smialo powiedziec, ze jest bardzo latwe w uzyciu:
Ten post edytował Seth 8.02.2006, 13:11:51 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
hmmm.. a moze kilka słów o zastosowaniach...
![]() bardzo mi sie podoba pomysl by uzyc takiego demona jako XMLsocket dla Flasha.. zreszta, cos takiego juz podobno fukcjonuje i to na polskim rynku... kto bywa na http://flashzone.pl i zna Wizzarda ten wie o czym mowie |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 0 Dołączył: 7.08.2003 Skąd: Warszawa | Jankowce Ostrzeżenie: (0%) ![]() ![]() |
co do tematu demona w srodowisku windows, cytujac manula php:
Cytat As of php 5, a new php-win.exe file is distributed. This is equal to the CLI version, except that php-win doesn't output anything and thus provides no console (no "dos box" appears on the screen). This behavior is similar to php-gtk. You should configure with --enable-cli-win32. http://pl2.php.net/features.commandline Niestety nie testowalem tego do konca, i na chwile obecna nie jestem w stanie powiedziec czy jest mozliwosc uruchomienia tego w obrebie innego uzytkownika aby zrobic z tego faktycznego demona, a wlasciwie usluge, ktora pozostanie aktywan po wylogowaniu usera. -------------------- Dev Env: php 5.0.5 | 5.1.1 / Apache 2.0.55 / MySQL 5.0.16 / apd
Dev platform: Windows XP | Debian Sarge |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 17:33 |