PHP ajax multiple calls

157 views Asked by At

I have been looking for several answers around the web and here, but I could not find one that solved my problem.

I am making several JQuery ajax calls to the same PHP script. In a first place, I was seeing each call beeing executed only after the previous was done. I changed this by adding session_write_close() to the beginning of the script, to prevent PHP from locking the session to the other ajax calls. I am not editing the $_SESSION variable in the script, only reading from it.

Now the behaviour is better, but instead of having all my requests starting simultaneously, they go by block, as you can see on the image:

Request timeline

What should I do to get all my requests starting at the same moment and actually beeing executed without any link with the other requests ?

For better clarity, here is my js code:

        var promises = [];
        listMenu.forEach(function(menu) {
            var res = sendMenu(menu);//AJAX CALL
            promises.push(res);
        });
        $.when.apply(null, promises).done(function() {
            $('#ajaxSpinner').hide();
            listMenu = null;
        });

My PHP script is just inserting/updating data, and start with:

<?php

session_start();
session_write_close();

//execution

I guess I am doing things the wrong way. Thank you in advance for you precious help !!

Thomas

1

There are 1 answers

2
Ian Stanley On BEST ANSWER

This is probably a browser limitation, there is a maximum number of concurrent connections to a single server per browser instance. In Chrome this has been 6, which reflects the size of the blocks shown in your screenshot. Though this is from 09, I believe it's still relevant: https://bugs.chromium.org/p/chromium/issues/detail?id=12066