Bhavesh G
Bhavesh G

Reputation: 3028

jquery ajax multiple requests

I've made a long-polling like a request in a function using jQuery ajax, which will run all the time. There is another request made to send data to PHP back-end file and this second request is not long-polling, it just sends data to that PHP file.

Problem: I examined with Firebug that when the long-polling request is running, I'm not able to send another request as long as the long-polling is running. How do I send another request even if the long-polling is running?

Note: I've used async: true in both.

another question: how do I make sure that even the function which holds long-polling request code will be called multiple times, but the long-polling request will be made only and only one?

Upvotes: 2

Views: 771

Answers (3)

Délcio Cabanga
Délcio Cabanga

Reputation: 21

Multiple requests with Ajax, Jquery.

By default Jquery already makes asynchronous requests; however, the 'queuing' problem does not happen in Javascript code unless you are using the async: false option; which would obviously block the browser until the request was terminated. In addition, this problem can occur for the following reasons:

1 - Using PHP's built-in server - Using this feature of PHP 5.5, responses to requests are made one after another on the same machine, that is, on the same computer. However, I recommend that you test the scripts using the latest version of the XAMP server;

2 - Use of sessions - For each session the responses to requests are presented in queues, not in parallel, however, it is recommended to use session_write_close;

3 - Unintended configuration of the MaxClients option of the directive in Apache - In case the first and / or second option does not occur; the third for sure, is the problem. To resolve, simply access the httpd-npm file and configure the MaxClients (256) option for multiple requests. In the current version of Apche, if I'm not mistaken, the MaxClients option has been replaced by MaxConnectionsPerChild.

Therefore, the options presented also depend on the contexts also presented. Hope this helps.

Upvotes: 0

codercake
codercake

Reputation: 1017

Does your php use session based authentication? Your problem might be session locking. This can occur in PHP that uses session_start() unconditionally at the top of each request, and is sometimes default behavior in an MVC framework even if the session is never modified. Other suspect use cases is if both scripts depend on being logged in as an admin user.

If you suspect this might be the case, try strategic placement of session_write_close() at the earliest possible point after you no longer need to modify session data for your two scripts.

Upvotes: 5

nnnnnn
nnnnnn

Reputation: 150000

You need to use async : true (which is the default).

If you say async : false that means it does a synchronous request, i.e., it waits for the first request to finish before doing anything else. You want an asynchronous request so that the browser can keep doing other things while waiting for the response from the first request.

(There is rarely a need for async : false, and if you're not sure whether you need it you almost certainly don't.)

Upvotes: 0

Related Questions