Schleife?

tomi

Mitglied
Hallo!

Ich habe ein Problem. Und zwar möchte ich mit Hilfe von PHP einen Bot in einem IRC Channel steuern. Soweit alles gut. Aber wie schaffe ich es, dass das PHP-Script ständig die neuesten Informationen aus dem Channel bekommt?
Ich möchte das aber nicht so lösen, dass ich das Script andauernd durch einen Site-Refresh neu aufrufe.
Vielleicht geht das ja irgendwie mit einer Schleife oder ähnlichem.
Danke für eure Hilfe.

MfG Tomi
 
ja, klar geht das mit ner schleife .. mach aber auf die dauer viel traffic!!!

du baust einfach ne endlos-schleife ein:

Code:
while(true)
{
  schleifenbody
}
wenn das nicht geht, dann mach ne zählschleife, die irgnedwie datum abhängig ist, also jede 10 sec reloaded

Code:
for ( i = 0; i < max; i++ )
{
  schleifenbody
}

auf jeden fall sollte deine ausgabe immer im schleifenkörper stehen, da es auch andere php funktionen gibt, wie zb. sleep() , die dir gar nix bringen, da dein php script erst geparst wird und dann an den browser geht.

also no chance für ne periodische ausgabe :(

cu
 
Hallo Transmitter,
danke für deine Antwort.

Könntest du noch die Syntax für eine Schleife posten, die sich alle 10 Sek. aktualisiert?

Danke.
 

es ist nicht eine stunde vergangen, und du wirst ungeduldig... tztztz

IMHO ist transmitters antwort einfach falsch. Es gibt keine möglichkeit, eine schleife alle 10sek auszuführen. Du könntest es mit Cron Jobs lösen, aber sicher nicht alle 10 sekunden.

Ein script wird einmal ausgeführt, in sekundenbruchteilen und ist dann beendet, es "am leben zu halten" würde vielleicht funktionieren, jedoch existiert zum glück noch die max_execution_time.

es ist also soweit ich weiß nicht möglich, solch eine schleife zu machen.
 
Nun ja, es gäbe die Möglichkeit, einen 'Stream' aufrecht zu erhalten. Sähe halt dann ungefähr so aus:
PHP:
while (1) {
   [...Ausgabe...]
   flush();
   sleep(10);
}
Dagegen spricht natürlich die max_execution_time, wie brÅinstorm ja schon erwähnt hat. Man kann sie zwar innerhalb eines Scripts hochsetzen, aber das erlauben sicher nur die wenigsten Serverbetreiber. Das Problem ist auch, dass man trotzdem eine Abbruchbedingung braucht, denn sonst würde das Script schlimmstenfalls bis zum nächsten Neustart des Systems laufen.

Am sinnvollsten wäre für Echtzeitanwendungen wohl die Verwendung von Java.


reima
 
ja, ok .. das mit der max exec time ist dann schon doof, aber serverseitig bedingt!

@brainstorm: klar gibt es da ne möglichkeit ein script 24h am laufen zu halten, natürlich bei richtiger server config!!!

@tomi: evtl. solltest du es dann doch mit nem refresh machen!

oder dir mal irgendwelche chats angucken, die halten ja auch ne verbindung zum server am laufen ...

transmitter
 
Zuletzt bearbeitet:
Also wenn man mal davon absieht, dass gettimeofday[Sec] wohl kein gültiges Konstrukt ist, versteh ich deinen Vorschlag trotzdem nicht so ganz. @Transmitter

Was dein Skript macht (od. machen sollte), ist lediglich folgendes:
1. 10 Sekunden in einer Endlosschleife laufen (dabei mächtig CPU-Cycles verbraten)
2. Eine Sekunde lang immer wieder "ircbot" ausgeben
3. Auf Timeout warten bzw. offenes Ende

Sinn? :confused:

[edit]Ist aber nicht nett, dass du deinen Beitrag einfach löschst, während ich hier rumgrübel ;)[/edit]


reima
 
ähh..naja..so grob sollte das aber funzen ...

aber in anbetracht dessen, dass man ja sowieso limits auf den webservern hat, bringt es ja nix :(
 
Zurück