[PHP]Jak stworzyć wieczny skrypt

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
emuace
Posty: 14
Rejestracja: pt sty 06, 2006 11:52 am
Kontakt:

[PHP]Jak stworzyć wieczny skrypt

Post autor: emuace »

Jak stworzyć wieczny skrypt? Chodzi mi o skrypt, który po uruchomieniu będzie śmigał przez cały cały czas. JEst mi to potrzebne do obsługi GGBota, który musi reagować na wiadomości w każdej chwili. Stworzyłem skrypt, któremu udało się podziałąć przez kilka godzin i się wyłączył
[php]<?php
set_time_limit(0);
$continue = true
while ($continue) {
//tu reszta instrukcji, w tym instrukcja wyłączająca ($continue = false) po otrzymaniu konkretnej wiadomości
}

?>[/php]
admin domeny.pl wyłączył mi safe_mode na koncie, niestety skrypt wykrzaczył się po kilku godzinach i nie wiem dlaczego.
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: Marek_bf »

Bo zjadłeś przez swoja nieskończoną pętlę zasoby serwera, ciesz się że nie dostałeś od admina kicka za taki skrypt. :)
emuace
Posty: 14
Rejestracja: pt sty 06, 2006 11:52 am
Kontakt:

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: emuace »

czemu? powiedziałem ,że mi wieczny skrypt nie działa, nie moge dać set_time_limit(0) bo ma msafe mode to mi safe mode wyłączył ;]jak postawić takiego bota bez nieskończonej pętli? a ten przepis znalazłem na forum poświęconym phplibgadu i ponoć powszechnie jest używany, niestety tamtejsie forumowicze się nie odzywają....
HaWaJ
Nowy
Nowy
Posty: 159
Rejestracja: pt kwie 06, 2007 5:12 pm

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: HaWaJ »

A może po prostu spróbować:

[php]
<?php

for ($i=1; $i>0; $i++){ //Pętla for skończy się wtedy gdy zmienna $i będzie mniejsza od 0 - czyli nigdy ;)
echo $i.'<br />'; //Wyświetlana jest zawartość - może być dowolna funkcja/instrukcja
}

?>
[/php]
emuace
Posty: 14
Rejestracja: pt sty 06, 2006 11:52 am
Kontakt:

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: emuace »

nie, klękni ez tych samych powodów co powyżej. while(1) odpada etc etc. pewnie skrypt jest wyłączany przez serwer
HaWaJ
Nowy
Nowy
Posty: 159
Rejestracja: pt kwie 06, 2007 5:12 pm

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: HaWaJ »

No to może zrobić iframe do skryptu oraz odświeżać co 2-3 sekundy tego właśnie iframe. Lub też użyć do tego celu AJAX`a.
emuace
Posty: 14
Rejestracja: pt sty 06, 2006 11:52 am
Kontakt:

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: emuace »

też odpada, jakbym mógł używać do tego celu przeglądarki.... :) to musi chodzić samodzielnie raz odpalone, aż do przewidzianej w skrypcie sytuacji, w której ma się pożegnać i wyłączyć
htmlowiecii
Nowy
Nowy
Posty: 86
Rejestracja: sob lip 19, 2008 11:51 am

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: htmlowiecii »

może napisz 2 prawie identyczne skrypty
1. odpalasz i nasłuchuje i po określonym czasie uruchamia 2. po czym się wyłącza a drugi robi to samo
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: gorylek »

Kombinujecie jak koń pod górkę. Od takich rzeczy jest CRON.
ryczypior
Posty: 12
Rejestracja: śr sty 07, 2009 10:35 pm

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: ryczypior »

Nie tyle cron co uruchomienie takiego skryptu jako daemona na serwerze. Cron spowoduje, że skrypt wywoływany będzie co jakis czas więc będzie np co kilka minut logował się i wylogowywał z sieci GG. Ciężko jest uruchomić skrypt działający jako demon z poziomu WWW, aczkolwiek można próbować jeszcze z funkcjami ignore_user_abort(true) i set_time_limit(0), ale za konsekwencje nie odpowiadam :)

pzdr.
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: [PHP]Jak stworzyć wieczny skrypt

Post autor: gorylek »

Jeżeli użyjesz sesje to możesz podtrzymać połączenie a częstotliwość działania skryptu można dokładnie określić. Fakt że cudów z tym nie narobisz.
ODPOWIEDZ