![]() |
![]() |
![]()
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) |
|
|
![]() |
![]()
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 |
|
|
![]()
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
|
|
|
![]()
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
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
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) |
|
|
![]()
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.
|
|
|
![]()
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 |
|
|
![]()
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. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
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
|
|
|
![]()
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.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
~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) |
|
|
![]()
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)
|
|
|
![]()
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)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 29.09.2025 - 11:38 |