Toon posts:

[php] realtime offline? Hoe?????

Pagina: 1
Acties:

Verwijderd

Topicstarter
ff een vraagje,

Ik ben een chat aan het schrijven en wil weten wie er 'echt' online zijn. Dus niet d.m.v. een database en een timeout waarna mensen gedelete worden!

Kan het? En zo ja hoe of met welke functies?

Anders dacht ik aan iets met <body unload=''>
en dan een (php) script uitvoeren om user te delten uit database, of iets in die trant, iemand ideeën?

Khoor het wel!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
dat gaat iets via een dingetje naar een db sturen en om de tijd via de db checken of er user response is ofzoiets.

Zoiets was het mar het staat wel ergens in de search

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Topicstarter
Kheb gesearched,

maare niet gevonden....
Maare tis een stap in de goede richting!
Misschien een idee voor een timout systeem ofzo?
Of kan dat ook simpeler?
...

  • Grum
  • Registratie: Juni 2001
  • Niet online
je kan ook zoals ilsechat met keepalive werken (nu mag je zelf zoeken :P )

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 15-09 16:01

killercow

eth0

tjah ik denk toch dat je iets met timeouts moet doen aangezien op unload etc ook allemaal weer uitzonderingen zijn zoals crashes, rare browsers, vervelende mensen etc, je weet het nooit op die manier.

openkat.nl al gezien?


  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 27-06 10:54
Probeer dit eens:

1 venster (chatvenster)
deze opend een ander venstertje (HEEEEEL kleintje)
die ook open moet blijven. Dit venstertje refresht elke x seconden en stuurt dan een "seintje" dat de gebruiker online is.

Als de gebruiker het 2e venstertje sluit (onunload) word er een opener.window.close gestuurt.

en als het chatvenster gesloten word dan word het kleine venstertje gesloten.

Dit heb ik net ff zitten bedenken.. of het ook werkt is weer iets anders :D

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


  • gridfox
  • Registratie: Januari 2000
  • Laatst online: 23-09-2023
OxiMoron, wat is dan het nut van een tweede venster?

Hey, it compiles . . . . Ship it !


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

waarom voor een chat applicatia PHP gebruiken?
is niet echt "the right tool for the rigth job"

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Ja er zijn betere tools om een chatserver mee te bouwen,

Maar het is best mogelijk door gebruikt te maken van de php socket functies.
Dit zijn volwaardige socketverbindingen waar de inhoud van gebufferd wordt todat je een php pagina opvraagd.

Het enige probleem is is dat het geen push technology is.
Dat wil zeggen dat het niet mogelijk is dat server een bericht naar de client stuurt wanneer er iets nieuws is.
De client moet telksen kijken of er iets nieuws is.

Dit kan best een load veroorzaken die je eigenlijk niet wilt.

Maar dit kun je weer oplossen door bij de client een applet te maken die verbind met een poort van server.
Wanneer de tekst veranderd stuurt een php script naar alle clients de niewe tekst. De applet zet het weer in een tekst veld.
Wordt alleen vervelend wanneer er mensen opeen uitloggen en ip's niet meer beschikbaar zijn. Dan gaat ie hangen.

Maar aangezien het binnen php mogelijk is met java te werken kun je dit natuurlijk weer omzeilen. Moet je server het wel ondersteunen.

Verwijderd

of je bouwt gewoon een chatserver en client in java :)

heb nog een server maar ik ben m'n applet kwijt :(

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 27-06 10:54
Op vrijdag 11 januari 2002 08:48 schreef gridfox het volgende:
OxiMoron, wat is dan het nut van een tweede venster?
Om te voorkomen dat je steeds naar een knipper scherm zit te kijken door de refreshes

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Verwijderd

Topicstarter
Zozo er wordt lekker meegedacht!

De output ben ik al uit! kheb iets met <IFRAME>
en dan een permanente loop in php de echoed, en een paar javascriptfuncties die voor het scrollen zorgen...

Dus zonder de socket functies, die geloof ik alleen in php4 worden ondersteunt(?)

Kben me een beetje aan het verdiepen in de connection_status functies in php.
om zodoende iets te doen misschien?

Dus zoiets als
if connection_aborted dan delete query ofzo...?

Maare ik kom er nog niet helemaal uit iemand ideeen?
khoor het wel.

Het kan inderdaad ookwel met een popup, maare dat vind ik niet netjes, dus liever niet!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op vrijdag 11 januari 2002 09:06 schreef wasigh het volgende:
waarom voor een chat applicatia PHP gebruiken?
is niet echt "the right tool for the rigth job"
hmmz ik ga het 1 keer met je eens zijn (mag wel een keer ;) )
ik vind php er niet voor geschikt

Doet iets met Cloud (MS/IBM)


Verwijderd

Op vrijdag 11 januari 2002 21:07 schreef loaded het volgende:
De output ben ik al uit! kheb iets met <IFRAME>
en dan een permanente loop in php de echoed, en een paar javascriptfuncties die voor het scrollen zorgen...
Daar zal je host niet zo blij mee zijn. Waarschijnlijk duurt het niet langer dan een week voordat php eraf wordt gegooid. Een permamente loop schopt de server load namelijk ontzettend omhoog.
Bovendien kan ik niets anders doen dan het met wasigh en d2k eens zijn ;) PHP is niet geschikt om een chat mee te bouwen... Je kunt met PHP namelijk niet bepaalde delen van het scherm (alleen het tekstding bv.) refreshen. Met een iframe kan het wel, maar gevolg is dat de gebruiker steeds even (2 à 5 seconden) moet wachten tot het scherm is geload.
Je kunt dit soort dingen (denk ik) het beste in JAVA oid doen, dus een java applet schrijven. Heb je je nog niet zo vediept in Java of ben je nog niet zo ver, dan zijn er zat gratis chat applets te vinden. PHP is gewoon niet de juiste taal hiervoor...

Verwijderd

Bekijk de code van de irc library van PHP Wizard eens. Hierin wordt er gebruik gemaakt van een script dat een oneindig tijdlimiet ( set_time_limit(0) ) heeft. Dit script wordt gebruikt om alle inkomende berichten (while loop, uit mysql gehaald) binnen te halen. Ook wordt er een shutdown funcie gebruikt (register_shutdown_function() ofzoiets). Deze functie wordt uitgevoerd zodra het script ophoud (de browser sluit of andere redenen). In deze functie wordt de gebruiker automatisch uitgelogt.

Voor de input wordt een apart frame met een form gebruikt die berichten in de database stopt.

Beetje beveiliging er aan (niet dat iedereen zomaar zonder ingelogt te zijn berichten kan plaatsen) en je hebt een php chat. Vereist veel bandbreedte maar werkt heel goed.

Ik raad je aan om eens naar de irc library te kijken.

(Natuurlijk is php niet de ideale taal om een chat mee te maken, maar het is mogelijk, zeker als je handig gebruik maakt van de ingebouwde php functies zoals register_shutdown_function())

Verwijderd

Topicstarter
register_shutdown_function())

klinkt interessant...
Kheb ff gelezen op php.net, kan je mer nog iets meer over vertellen?

Verwijderd

realtime + http :?

http is in principe een connection-less protocol... het enige dat je zou kunnen doen is pollen. Dan kun je nog kiezen of je dat client- of server-side doet.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

zoals al gezegd: als je dit wil maken moet je met een keepalive header de verbinding geforceerd openhouden. Dan ben je al een heel end.

Klaar voor een nieuwe uitdaging.


Verwijderd

register_shutdown_function()

klinkt interessant...
Kheb ff gelezen op php.net, kan je mer nog iets meer over vertellen?
geef je een functie naam door aan deze functie dan wordt de doorgegeven functie uitgevoerd zodra alle andere code klaar is en het script stopt (bijv. als de browser sluit). Omdat de browser dus al gesloten is kan de functie die uitgevoerd wordt geen output hebben. Maar je kan de functie wel gebruiken om bijv. de user uit te loggen omdat hij nu toch niets meer kan ontvangen omdat het browser venster al gesloten is.

Kijk even de code van de IRC chat van phpWizard door, er wordt daar ook nog gebruik gemaakt van een functie die er voor zorgt dat het php script wel of niet moet reageren op een klik op de stopknop van de browser (dat dus niet de chat stopt als de persoon perongeluk op de stop knop drukt en zo uitgelogt raakt).
Pagina: 1