Page 1 of 1

Chat system in PHP

Posted: Wed May 24, 2006 12:17 am
by varun8211
hi,
I am trying to create a chat room in PHP.. I tried an open source PHP121 chat that uses AJAX. I could understand the working but, the thing that I disliked was the use of database to store messages between users.. I think, it would not be a good practice to access db for each message that is forwarded to the users chatting.. (it may create too many db connections and many transactions simultaneously when the more than 100 users chatting at same time.. I dont know, if my concept it clear .. plz elaborate, if I am wrong)..
Now, the next step I tried was to use XML to store and retrieve messages but this time, I was not able to find the DOM API.. (if anybody knows, plz help me).
My next step was to use simple text file to store messages but then I stumble upon the problem of multiple users accessing (read/write) 1 file at the same time..

I am still not sure, which is the best method to incorporate a chat system (1 to 1 chat only) in PHP..
Should I use Socket programming in PHP ?
I found this article recently posted here "http://www.devshed.com/c/a/PHP/An-Intro ... ts-in-PHP/".

Any help would be greatly appreciated..
thanks

Posted: Wed May 24, 2006 12:20 am
by neogeek
Check out http://betamasters.getdata.be/

Hope that helps.

Re: Chat system in PHP

Posted: Wed May 24, 2006 1:26 am
by timvw
varun8211 wrote: I think, it would not be a good practice to access db for each message that is forwarded to the users chatting.. (it may create too many db connections and many transactions simultaneously when the more than 100 users chatting at same time..
Isn't that what databases have been built for?
varun8211 wrote: Now, the next step I tried was to use XML to store and retrieve messages but this time, I was not able to find the DOM API.. (if anybody knows, plz help me).
Have you already tried to do access (and modify) an XML file with a couple of concurrent users? I'm pretty sure you don't want to roll your own transaction mechanism either...
varun8211 wrote: My next step was to use simple text file to store messages but then I stumble upon the problem of multiple users accessing (read/write) 1 file at the same time..
It seems you've already experienced that transactions, or concurrent access can be a PITA. And yes, that's exactly what most DBMS have been built for..

varun8211 wrote: Should I use Socket programming in PHP ?
How would it solve your problem?



If i get it right, you currently have many users, that can send messages to other users (currently to only one other user).

Basically, you have a table users (user_id, username, password, bio, ...)
And you have a table for messages (sender_id, recipient_id, messagebody, sendtime)

Now it's pretty simple: When a users sends a message, simply INSERT INTO the messages tables...
When a users requests message: SELECT from messages and DELETE where message_id IN (SELECT from messages)