Hi,

I really wouldn't recommend queuing up 250 Ajax calls like that.  Most
browsers (and most servers, for that matter) will only allow two
connections between the same two endpoints, and then queue the rest,
and it sounds like there might be some bugginess in the queuing (which
doesn't surprise me).  Instead, I'd make the completion of one request
kick off the next.  Semi-pseudocode:

function ajaxTableFill(list, index) {
    var url, parameters;

    // Make sure call is valid (also ends the loop)
    if (index >= list.length) {
        return;
    }

    // ...determine URL and parameters...

    // Start this request
    new Ajax.Request(url, {
        parameters: parameters,
        onSuccess: function(response) {
            // ...handle success...
        },
        onFailure: function(response) {
            // ...handle failure...
        },
        onComplete: function() {
            // Fire off the next request
            ajaxTableFill(list, index + 1);
        }
    });
}

Then kick it off like this:

    ajaxTableFill(list, 0);

That would only have one request outstanding at any given time, which
will frequently leave a second channel open for anything else you
might be doing (although you can't take that as a guarantee, you might
have only one channel available).

Of course, if you could collect more than one row's worth of
information on each call, that would also be a really good idea; what
with setup, processing, and teardown, if you figure each request takes
at least a second, 250 requests is more than four minutes!  If you
could grab 50 rows on each (or even all 250 on one call) or something
like that...  But I assume you have some reason for having it broken
into 250 parts.

HTH,
--
T.J. Crowder
Independent Software Consultant
tj / crowder software / com
www.crowdersoftware.com


On Oct 9, 6:59 pm, Dusko Sobic <dso...@gmail.com> wrote:
> Hi All!
>
> In brief - I have a table with 250 rows of data and I am trying to
> fill in 2 columns with ajax calls.
> --------------------------------------------------
> var sel_list_queue = new Array(# this is an array with more than 200
> IDs#);
>
> if(sel_list_queue.length>0) {
>
>     var url = 'ajax/getData.php';
>     var fromd = '2009-10-10';
>     var tod = '2009-10-11';
>
>     for (var i = 0;i<sel_list_queue.length;i++)
>     {
>
>         if(sel_list_queue[i]!=''){
>
>             var spanname = "loader_req_" + sel_list_queue[i];
>             var divname = "req_" + sel_list_queue[i];
>             aja(url, spanname, divname, sel_list_queue[i], 0, fromd,
> tod);
>
>             var spanname = "loader_tot_" + sel_list_queue[i];
>             var divname = "tot_" + sel_list_queue[i];
>             aja(url, spanname, divname, sel_list_queue[i], 1, fromd,
> tod);
>         }
>
>     }
>
> }
>
> function aja(url, spanname, divname, l_id, to, fromd, tod){
>
>     new Ajax.Request('myajax/create_curl_package.php', {
>           method: 'post',
>           parameters: {
>             listid:l_id,
>             total:to,
>             fromd:fromd,
>             tod:tod
>           },
>           onLoading: function(){Element.show(spanname);},
>           onSuccess: function(t) {
>               Element.hide(spanname);
>               $(divname).update(t.responseText);
>           }
>         });
>
> }
>
> --------------------------------
>
> getData.php do SELECT COUNT(`id`)...
>
> Problem: When I start this script I see "Loading..." in every field in
> mentioned 2 columns, and results start showing. At one moment, when
> getData.php do COUNT() on tabel with 18 000 000 rows everything stops.
> Mysql have no processes in list, about 100 "Loading..." messages are
> still on the page.
>
> What could be bottleneck in your opinion. Please help.
>
> php script do not return any error, i have not found anything in
> Apache log
>
> Thank you in advanced!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to