PHP Scrip op achtergrond runnen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cake Masher

Cake Masher

24/09/2012 17:39:20
Quote Anchor link
Beste,

Ik ben hier al een hele tijd naar opzoek, maar ik kom er echt niet uit. Wie kan me helpen?

Ik probeer via PHP een verbinding te openen naar een server, bijvoorbeeld een IRC Server. Deze verbinding moet open blijven staan omdat er data heen en weer gaat over deze verbinding. In het geval van een IRC server gaat het hier over ping, pong, de chat zelf, etc.. etc.. Dit houd in dat het PHP script dat moet worden opgeroepen een oneindige loop is, totdat de verbinding gesloten word.

Nu wil ik dit graag op de achtergrond hebben. Een voorbeeld is dat je een IRC chat venster voor je hebt, waarbij de verbinding naar de server op de achtergrond door loopt. Data moet uitwisselbaar zijn, dus als er bijv. wat word gechat op de IRC server, ik dat zou kunnen laten zien in het chat venster.

Flush of iets dergelijks is geen optie, de pagina zelf mag niet blijven laden.

Ik heb zelf geprobeerd dit met AJAX te doen en dan vervolgens data over te brengen via sessies. Dit werkte, alleen zodra ik de browser afsluit, blijft de verbinding erg lang nog open staan. Ook gebeurde het soms dat ik helemaal geen verbinding open kreeg. Dit laatste gebeurde vooral als de vorige verbinding nog niet gesloten was. Bijvoorbeeld als ik op F5 druk, opent hij een 2e verbinding, en blijft de eerste nog actief. De 2e verbind niet en reageert ook niet, terwijl de eerste ook niet meer reageert.

Wie kan me hierbij helpen?

Alvast bedankt voor de moeite!
 
PHP hulp

PHP hulp

23/12/2024 21:23:03
 
Cake Masher

Cake Masher

27/09/2012 20:17:33
Quote Anchor link
Ik ben er nog niet uit gekomen, iemand enig idee?
 
Jaron T

Jaron T

27/09/2012 21:24:21
 
Cake Masher

Cake Masher

28/09/2012 00:43:12
Quote Anchor link
Bedankt voor je reactie! Toch jammer dat het niet mogelijk is in PHP.

Op het moment heb ik 't via jquery uitgevoerd. Het lijkt nu wel redelijk te werken.

Ik heb een pagina waar de loop in zit, deze word aangeroepen door jquery d.m.v. de get functie. Als die jquery de functie aanroept voor als de get gelukt is, weet ik dus dat de connectie of de loop is gestopt.

De loop kijkt elke keer of een sessie is gevuld, zo ja, voert hij deze uit en leegt hij hem weer en zet het resultaat van de commando in een andere sessie.

Ondertussen runt jquery een pagina als er een commando word ingevuld. Deze plaatst het commando in de sessie, en start zelf ook een loop om te kijken of de resultaat sessie al gevuld is. Zo ja, stuurt hij dit terug.

Het werkt redelijk, alleen vind 't een beetje jammer dat het zo moet. Hopen dat er in de toekomst multi-threading voor php word gemaakt :).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.