[PHP] Real Time chatbox

Pagina: 1
Acties:

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 14-09 14:31

Snow_King

Konijn is stoer!

Topicstarter
Hallo,

In dit [topic=402709] topic werd er gezegt dat het niet kon een Real Time chatbox in PHP!

Ik heb het tegendeel gevonden! Op PHPFeakz vond ik dus http://www.phpfreakz.nl/library.php?sid=234 artikel waarin staat dat het WEL kan en ik een beetje klooien en het werkt ja!

Ik heb het script nog niet online maar zodra ik het wel heb dan meld ik het wel!

Verwijderd

Ik heb zelfs een soortement chatbox :P

oftewel een linerz (zoals vroeger van BBSjes) enzo, best stoer en werkt gewoon met een bestandje ;) maar denk ook wel dat een gewone chat mogelijk moet zijn in PHP, waarom niet?

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 14-09 12:41

Super_ik

haklust!

*kuch* JAVA *kuch*

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 14-09 12:41

Super_ik

haklust!

Op vrijdag 08 februari 2002 21:25 schreef xtentic het volgende:
Ik heb zelfs een soortement chatbox :P

oftewel een linerz (zoals vroeger van BBSjes) enzo, best stoer en werkt gewoon met een bestandje ;) maar denk ook wel dat een gewone chat mogelijk moet zijn in PHP, waarom niet?
omdat de pagina dan telkens helemaal moet refreshen :)

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Verwijderd

helemaal?... tja idd de regels die je wilt veranderen zou je dan moeten refreshen, maar je kan ook alleen een 'db' herladen :)

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 14-09 14:31

Snow_King

Konijn is stoer!

Topicstarter
Op vrijdag 08 februari 2002 21:28 schreef xtentic het volgende:
helemaal?... tja idd de regels die je wilt veranderen zou je dan moeten refreshen, maar je kan ook alleen een 'db' herladen :)
Dit script connect met mysql_Pconnect dus een connecite die blijft staan!

Vandaar dat ie real-time is blijft dus een stream open, ok kost wel wat server load :7

Verwijderd

wat?... ik denk dat het minder kost dan steeds de pagina refreshen ;)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op vrijdag 08 februari 2002 21:44 schreef Snow_King het volgende:
Dit script connect met mysql_Pconnect dus een connecite die blijft staan!

Vandaar dat ie real-time is blijft dus een stream open, ok kost wel wat server load :7
Owkay die snap ik niet helemaal? Wat heeft pconnect() hier mee te maken?

Het gaat erover dat de client telkens moet refreshen. pconnect() slaat op de connectie die de server heeft op de db.

Het is net zo real-time als je geen pconnect gebruikt hoor. Het gaat erom dat de client blijft refreshen
(beetje vaag, maar hoop dat het idee duidelijk is)

Verwijderd

Op vrijdag 08 februari 2002 22:00 schreef Glimi_ie het volgende:

[..]

Owkay die snap ik niet helemaal? Wat heeft pconnect() hier mee te maken?

Het gaat erover dat de client telkens moet refreshen. pconnect() slaat op de connectie die de server heeft op de db.

Het is net zo real-time als je geen pconnect gebruikt hoor. Het gaat erom dat de client blijft refreshen
(beetje vaag, maar hoop dat het idee duidelijk is)
Alleen kost het sturen van veranderde data minder tijd dan de gehele pagina sturen. :?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op vrijdag 08 februari 2002 22:03 schreef xtentic het volgende:
Alleen kost het sturen van veranderde data minder tijd dan de gehele pagina sturen. :?
PHP genereerd de pagina gewoon weer opnieuw hoor, hij zegt niet van "De vorige pagina en dan dit er nog bij"

Of begrijp ik je verkeerd en bedoel je dat ie niet alle pics enzo weer opnieuw gaat ophalen (de client) maar daar heb je toch cache voor.

Verwijderd

't zou kunnen dat er nieuwe data bij gekomen is? en die zo kan adden, mja daar ben ik niet zekers van :)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op vrijdag 08 februari 2002 22:07 schreef xtentic het volgende:
't zou kunnen dat er nieuwe data bij gekomen is? en die zo kan adden, mja daar ben ik niet zekers van :)
Ik wel.... dat kan niet via HTML :)

Verwijderd

Op vrijdag 08 februari 2002 22:15 schreef Glimi_ie het volgende:

[..]

Ik wel.... dat kan niet via HTML :)
Wel met html in conbinatie met Javascript toch?... daarvoor hoef je echt geen applet in java te hebben, lijkt mij ;) je zet er gewoon een timer in en add de lijnen aan de lijnen die je hebt ;)... teminste zo denk ik :)

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
dames, dit script eindigt nooit en hoeft dus ook niet te refreshen..

Wel zorgt dit script ervoor dat er onnodig veel apache-kindertjes gemaakt moeten worden zodat je lekker veel load trekt..

Maar ga nou aub php niet gebruiken voor dingen waar het niet voor bedoeld is, gebruik maar java ofzo.

Verwijderd

het lijkt er misschien op, maar dit is geen realtime chatbox;
steeds als er een nieuw bericht geschreven wordt, moet er toch herladen worden. Het is gewoon heel simpel niet mogelijk om een echte realtime chat te maken met alleen php...

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op vrijdag 08 februari 2002 22:17 schreef xtentic het volgende:
Wel met html in conbinatie met Javascript toch?... daarvoor hoef je echt geen applet in java te hebben, lijkt mij ;) je zet er gewoon een timer in en add de lijnen aan de lijnen die je hebt ;)... teminste zo denk ik :)
Bedoel je een niet eindigend script? Dat is eigenlijk een fout van IE. Die begint al met parsen als de pagina nog niet af is. NS doet dit volgens mij niet :)

  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
Je kan met javascript een timer instellen die na zoveel milliseconde een bepaalde functie aanroept, volgens mij werkt dat onder iedere browser wel hoor

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
Op vrijdag 08 februari 2002 22:43 schreef BurningSheep het volgende:
Je kan met javascript een timer instellen die na zoveel milliseconde een bepaalde functie aanroept, volgens mij werkt dat onder iedere browser wel hoor
en wat doet javascript dan? Juist... een refresh :+

  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
Op vrijdag 08 februari 2002 22:45 schreef |HunterPro| het volgende:

[..]

en wat doet javascript dan? Juist... een refresh :+
ik reageerde eigenlijk op Glimi_ie, php chatboxes begin ik niet aan. Ook al kan je tegenwoordig ook sockets programmeren met php, is nog wel expirmenteel. Voor dat soort dingen is Java uitgevonden en Flash natuurlijk.

edit:

Ok, misschien ben ik weer een beetje te vaag (laten m'n chronische slaapgebrek maar even de schuld geven ;))

Voordat jullie allemaal gaan reageren om mij het verschil tussen client en server uit te leggen... met sockets programmeren doel ik op een php chat server op te zetten, wat je dan als client gebruikt mag je zelf weten ;)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op vrijdag 08 februari 2002 22:51 schreef BurningSheep het volgende:
ik reageerde eigenlijk op Glimi_ie, php chatboxes begin ik niet aan. Ook al kan je tegenwoordig ook sockets programmeren met php, is nog wel expirmenteel. Voor dat soort dingen is Java uitgevonden en Flash natuurlijk.

edit:

Ok, misschien ben ik weer een beetje te vaag (laten m'n chronische slaapgebrek maar even de schuld geven ;))

Voordat jullie allemaal gaan reageren om mij het verschil tussen client en server uit te leggen... met sockets programmeren doel ik op een php chat server op te zetten, wat je dan als client gebruikt mag je zelf weten ;)
offtopic:
Blah...blah...client!...Blah!...server!!!


Het is inderdaad mogelijk om de boel open te zetten via sockets, maar dan moet je die zooi gaan uitlezen met java / C / VB oid. Ik zie javascript ook nog niet zo'n socket aanroepen, maar dat kan liggen aan mijn ervaring met JS.

Het lijkt me trouwens ook niet fijn om de boel te regelen met php. Dit kost je een constante db verbinding, open socket en een ENORME cpu load voor elke client die je draait

Verwijderd

Op vrijdag 08 februari 2002 22:43 schreef BurningSheep het volgende:
Je kan met javascript een timer instellen die na zoveel milliseconde een bepaalde functie aanroept, volgens mij werkt dat onder iedere browser wel hoor
Inderdaad :) en pas beginnen wanneer functie aangeroepen wordt oftewel wanneer de pagina totaal geladen is :?... kan altijd wel gecontroleerd worden : )

Verwijderd

Ik heb het tegendeel gevonden! Op PHPFeakz vond ik dus http://www.phpfreakz.nl/library.php?sid=234 artikel waarin staat dat het WEL kan en ik een beetje klooien en het werkt ja!

Ik heb het script nog niet online maar zodra ik het wel heb dan meld ik het wel!
Heeft er dan niemand hier gehoord van de phpWizard.

Deze heeft allang zo'n chat. Hierin wordt simpel getoond hoe je de connectie open kan houden door php een time limit te geven van 0

ook wordt er register_shutdown_function() gebruikt om de gebruiker uit te laten loggen zodra het script eindigd. Nooit meer kijken dus welke gebruikers er al x minuten inactief zijn.

check: http://www.phpwizard.net -> phpIrc en phpChat (voor een voorbeeld van de phpIrc library)

Maar als je toch serieus een chat maakt doe het dan in java en gebruik als client ook java (of flash en xml sockets voor de liefhebbers :) )

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 14-09 14:31

Snow_King

Konijn is stoer!

Topicstarter
Het probleem is ik kan geen woord in Java ik kan alleen maar php!

  • Mior
  • Registratie: Maart 2000
  • Laatst online: 14-09 13:06
Neem eens een kijkje naar IRCG.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 08 februari 2002 21:26 schreef Super_ik het volgende:
*kuch* JAVA *kuch*
*KUCH* SOAP *KUCH*

Programmer - an organism that turns coffee into software.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
LuCarD: *KUCH* SOAP *KUCH*
Best knap als jij een chat-client in SOAP kan schrijven :P .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • J3roen
  • Registratie: Januari 2000
  • Niet online

J3roen

Intentionally left blank

Onzin dat dit het niet zou kunnen. Je kunt gewoon een loop houden in je script; en telkens met flush() de nieuwe chat regels in je pagina zetten.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
CRiSiS: Onzin dat dit het niet zou kunnen.
Mwah, ik vind het eigenlijk onzin dat jij het onzin vindt :P .
Je kunt gewoon een loop houden in je script; en telkens met flush() de nieuwe chat regels in je pagina zetten.
We voeren een extra vereiste in: het moet valid HTML of XHTML zijn :P .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • me1299
  • Registratie: Maart 2000
  • Laatst online: 14-09 10:21

me1299

$ondertitel

Op zaterdag 09 februari 2002 19:26 schreef CRiSiS het volgende:
Onzin dat dit het niet zou kunnen. Je kunt gewoon een loop houden in je script; en telkens met flush() de nieuwe chat regels in je pagina zetten.
Ja maar als je dan wat wil zeggen moet je toch POSTEN.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Verwijderd

Ik heb weleens zoiets gedraait, maar het werkt BAGGER en het kost verschrikkelijk veel load op de server... hij stond continue zo'n beetje op 3.00!! met 1 client! daar wordt je helemaal crazy van.

Verwijderd

Verhaal over flush()
Ook dat gaat niet op, de server heeft een max-time dat een script mag lopen, en dan killed 'ie 'm. dus die valt ook af. of je moet als serveradmin dat geval wat hoger schroeven, zoiets als "Maximale chat-tijd

Verwijderd

in principe kan je wel een php "chat" maken, maar gevolg is of steeds refreshende browser (vreselijk irritant, al helemaal voor modem users) of een continue loop wat je server naar de klote helpt...

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 14-09 14:31

Snow_King

Konijn is stoer!

Topicstarter
Op zaterdag 09 februari 2002 21:04 schreef jurriebur het volgende:
in principe kan je wel een php "chat" maken, maar gevolg is of steeds refreshende browser (vreselijk irritant, al helemaal voor modem users) of een continue loop wat je server naar de klote helpt...
Ik kan in java nix en het nadeel van zo'n gedowned ding is dat je niet volledig je eigen layout bepaald

  • Baxlash
  • Registratie: Juni 2000
  • Niet online

Baxlash

Its a boy Genius!

Ik heb wel eens zo iets geprobeerd, maar vanwege timeouts aan de client side en hoge serverload, heb ik hem toch omgebouwd.

Ik heb een popup van 3 frames gemaakt, in het bovenframe komt de chat te staan, 2de frame kan je teksten intikken, en het 3de frame is hidden (lees: 0px) die alle data uit de server trekt en het met een innerhtml/innertekst in het bovenste frame parkeert.

Het bovenste frame refresht niet, je ziet geen refresh, je hoort geen refresh, het lijkt realtime, en het is een lage serverload :)

(data komt btw gewoon uit een mySQL databeest)

En voila :)

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 14-09 14:31

Snow_King

Konijn is stoer!

Topicstarter
Ok ik heb nu toch een java ding gedowned maar waar kan ik een soort Java plugin krijgen voor Apache zodat ik java kan draaien op mijn RH 7.2 bak?

Verwijderd

Op zondag 10 februari 2002 11:23 schreef Snow_King het volgende:
Java plugin krijgen voor Apache
Apache heeft geen java plugin, wat je doet is een java server draaien (eerst java installeren op je machine, zie: http://java.sun.com). Dan in de docs van de chatserver lezen hoe je hem start.

Enige waar je apache voor nodig hebt is de pagina te laten zien waarop de java client zich bevind

  • admiral866
  • Registratie: April 2000
  • Laatst online: 13-09 01:32

admiral866

The King Personality Disorder

Op zondag 10 februari 2002 11:18 schreef rolandketel het volgende:
Ik heb wel eens zo iets geprobeerd, maar vanwege timeouts aan de client side en hoge serverload, heb ik hem toch omgebouwd.

Ik heb een popup van 3 frames gemaakt, in het bovenframe komt de chat te staan, 2de frame kan je teksten intikken, en het 3de frame is hidden (lees: 0px) die alle data uit de server trekt en het met een innerhtml/innertekst in het bovenste frame parkeert.

Het bovenste frame refresht niet, je ziet geen refresh, je hoort geen refresh, het lijkt realtime, en het is een lage serverload :)

(data komt btw gewoon uit een mySQL databeest)

En voila :)
lol, wou ik ne t zeggen.
Maar dit lijkt me idd geen slechte oplossing :)

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 14-09 08:34
In plaats van met de MySQL database te gaan communiceren, wat blijkbaar veel load vraag, ben ik eens bezig geweest met het ouderwetste TXT bestandje:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
while (TRUE)    // oneindige loop
{

    $message = file("messages.txt"); // Haal bericht op
    if ($oldmessage != $message[0]) // Check oud bericht
    {
        print "$message[0]<br>"; // Print de eerste, enige lijn in messages.txt
        flush(); // Output naar client
        $oldmessage = $message[0]; // Set oude bericht zodat ie dit niet tig keer laat zien
    }
    set_time_limit(60);
    sleep(2);
}
?>

Dit werkt nu redelijk, en de load is niet echt superhoog, ik ben nog wel opzoek naar andere manieren maar dat komt nog wel denk ik (javascriptje dat de balk omlaag houdt, maar dat zijn details).

Wat vinden jullie hiervan???

Oja, zonder set_time_limit(60); knalt ie eruit zodra je die sleep doet van 2 seconden (lekker lijp maar het werkt wel).
Pagina: 1