tags:

views:

87

answers:

4

i am trying to making php ajax based chat system....and i have developed it successfully...i am using jquery load() with setInterval to reload chat every 1 second and it works fine on my localhost....but when i uploaded it on my hosting server it also works fine ... but problem is that after few mintues of chat the server takes to much long gets heavy loaded so that my server goes and and site goes down...

my question is that, why it is happening so far...and what is the solution...should i use standard xmlhttprequest instead of load() or $.ajax() instead of load();

+2  A: 

The method you use to make the AJAX request doesn't matter, you have something else wrong in your code that is causing the slowing down.

Tatu Ulmanen
i have a file name reload_chat.php that loads every chat message in <li> tag..and i am calling that file via setInterval with load(); and i have nothing else....could you please let me know what should i do to get rid of this prob...
Web Worm
+1  A: 

jQuery.load() and jQuery.ajax() are basically front-ends for XMLHttpRequest. If they add extra overload (which is possible) it would only affect the browser.

Are you sure your server can handle such load? One request per second means that one single user triggers a minimum of 3600 requests per hour of conversation and I presume each request involves at least a database lookup. Now, being a chat server you are expected to have many simultaneous users.

Things you can try:

  • Lower the refresh rate
  • Do no not send new requests while they're pending ones
  • Make sure the server-side script is lightning fast
Álvaro G. Vicario
+1  A: 

Try increasing the refresh interval from 1 second to, say, 10 seconds.

Salman A
+1  A: 

Tatu is correct - think about what each request is returning and what is actually required. For example, are you returning the entire chat log, or just the new messages since the last poll? If there is no activity for a while, is there a need to poll every second? Consider increasing the poll time each time there's nothing new (and reset it back to 1 second when there is something new).

You could also take a look at COMET methods for applications which require "push" technology.

nickf