Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nasłuchiwanie w PHP
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Witam,

napisałem BOTa w oparciu o klasę rfGG.
Zastanawia mnie czy w czystym PHP mógłbym zręcznie go uruchomić tj. aby użytkownik otrzymywał w miarę szybką odpowiedź.
Usatysfakcjonował by mnie cron co 10sekund (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


sam sobie odp. na pytanie (IMG:style_emoticons/default/wink.gif) cron

Ten post edytował CuteOne 22.03.2011, 03:43:47
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cron na minute + sleep co 10 s w skrypcie
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Powinieneś zrobić normalnego daemona: http://pear.php.net/package/System_Daemon
Go to the top of the page
+Quote Post
markonix
post
Post #5





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(CuteOne @ 22.03.2011, 03:43:34 ) *
sam sobie odp. na pytanie (IMG:style_emoticons/default/wink.gif) cron

Nie wiem czy jest to do zmiany (mam dedyka) ale maksymalnie mogę ustawić crona co minutę w DA (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To norma. CRONa nie idzie wywoływać częściej. To co proponuje Ci wookieb to napisanie pętli, która ma kilka iteracji (kodu z segmentami czy co ta chcesz), a każda z nich jest wstrzymywana na ileś sekund.
Go to the top of the page
+Quote Post
markonix
post
Post #7





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cron co minutę 1 slepp na sekundę, brzmi ciekawe, a zarazem banalnie.
Deamon byłby ciekawym wyzwaniem tylko zastawia mnie jaka tu jest praktyczna różnica (demon też nie jest przecież wykonywany co milisekundę, ani też wywoływany jakimś zewnętrznym zdarzeniem, tu np. przyjściem wiadomości gg) między demonem a cronem?

Na forum pojawiła się właśnie klasa do BOTA GG i jest tam:
Kod
// Nieskończona pętla, konieczna aby skrypt się nie zakończył a bot działał 24/h
// Przełamie się dopiero gdy admin wyśle do bota komendę wyłączającą lub utworzymy plik a.txt w katalogu bota

set_time_limit(0);

while ( !is_file('a.txt')

Zastanawia mnie skuteczność i bezpieczeństwo tej metody?

Jeszcze 3 sprawa mnie zastanawia: gdybym popełnił błąd w obliczeniach i źle ustawił funkcję slepp + cron co minutę i doszło by do sytuacji gdy pierwszy cron wykonywał by się jeszcze, gdy drugi by się miał urchomić to czy to doprowadziłoby do:
- wyłączenia pierwszego "wywołania"
- braku reakcji na drugi cron
- dwa crony jednocześnie?

Ten post edytował markonix 22.03.2011, 15:33:07
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
jaka tu jest praktyczna różnica (demon też nie jest przecież wykonywany co milisekundę, ani też wywoływany jakimś zewnętrznym zdarzeniem, tu np. przyjściem wiadomości gg) między demonem a cronem?

Demon działa w pętli nieskończonej i nie jest to zależne w żaden sposób od czasu. Choć są i sposoby, które wymagają sprawdzania czasowego, ale jeśli chodzi o programowanie zdarzeniowe (np. JS, Qt, etc), to wówczas masz minimalne opóźnienia czasu reakcji w stosunku do akcji.

Cytat
Jeszcze 3 sprawa mnie zastanawia: gdybym popełnił błąd w obliczeniach i źle ustawił funkcję slepp + cron co minutę i doszło by do sytuacji gdy pierwszy cron wykonywał by się jeszcze, gdy drugi by się miał urchomić to czy to doprowadziłoby do:

Google: race condition.
Go to the top of the page
+Quote Post
markonix
post
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(erix @ 22.03.2011, 16:57:17 ) *
Demon działa w pętli nieskończonej i nie jest to zależne w żaden sposób od czasu.

Gdybym w demonie ustawił jakieś zapytanie do bazy to by je wykonywał po kilka tysięcy razy w zależności od mocy obliczeniowej serwera?
Jego stosowanie ma chyba jedynie sens gdy go odpowiednio ograniczymy (slepp lub coś podobnego), aby wykonywał się co np. pół sekundy?
Go to the top of the page
+Quote Post
zegarek84
post
Post #10





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


jeśli robisz to na socketach to nie potrzebujesz timouta - wystarczy jeśli nasłuch na sockecie ustawisz w trybie blokowanym stream_set_blocking
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~markonix, nie - oczekujesz po prostu w pętli na zdarzenie, a wykonujesz zapytanie dopiero wtedy, gdy ono nastąpi.
Go to the top of the page
+Quote Post
markonix
post
Post #12





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(erix @ 22.03.2011, 22:46:36 ) *
~markonix, nie - oczekujesz po prostu w pętli na zdarzenie, a wykonujesz zapytanie dopiero wtedy, gdy ono nastąpi.


Ale domyślam się gdybym tym zdarzeniem była np. jakaś zmiana w bazie danych to SELECT, który by był odpowiedzialny za wykrycie tego zdarzenia wykonywał by się kilka tysięcy razy na minutę? Oczywiście to tylko tak hipotetycznie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Hmm, od tego chyba jest trigger. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
kiler129
post
Post #14





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Zrób demona i zainteresuj się stream_select() - wykożystasz wtedy pool systemu i php będzie jako idle zanim nie dostanie danych od serwera gg (wtedy dopiero "odmrozi" kod)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.09.2025 - 11:38