Just did some testing in the current preview grid (1.12.1 (0)). All tests were done many times in Sandbox Goguen, with one other person on the other side of the sim, and the sim doing less than 1000 IPS and Time Dilation at 1.00. In other words a very good sim.
When sending one request per second, there was no errors, the script was able to continue forever.
When sending one every 0.75 seconds, SL gave a "Too many HTTP requests too fast." error after around 37 requests, and with 0.5 seconds at 25 requests. After the error, that prim could not send any more requests for about a minute or so.
Notice I said prim, not object. The limit is per prim. Another object, or even another linked prim, could continue sending requests, but the one that generated the error could not.
Next test was bursts. I put llHTTPRequest() inside a loop to see how many could be done at once. SL allowed 25 before giving the error.
I tried sending 20 requests every 20 seconds, but the second loop was stopped after 5 requests. When trying 20 requests every 30 seconds, the requests were stopped 15 into the second loop. 20 requests every 40 seconds was allowed to keep going.
To test the per prim limit again, I linked four of these together, and there were no problems with 20 per 40sec from all four at once. Two scripts in the same prim did not work however, confirming the per prim limit.
Seems like the limit might be around 25 every 25 seconds, but it doesn't like bursts close together

For the record, here's the script I used to test loops (though with the actual URL removed). The PHP script simply echo'd the name sent to it to confirm the request went through.
string PhpUrl = "http://www.site.com/pingtest.php";
list PhpPost = [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/x-www-form-urlencoded"];
integer Active;
integer x;
Ping_Test()
{
llOwnerSay("Start");
x = 0;
while(x < 20)
{
llHTTPRequest(PhpUrl, PhpPost, "&name=" + (string)(++x));
}
}
default
{
touch_start(integer total_number)
{
Active = !Active;
if(Active)
{
llSetTimerEvent(40);
Ping_Test();
}else{
llSetTimerEvent(0.0);
}
}
timer()
{
Ping_Test();
}
http_response(key request, integer status, list metadata, string body)
{
llOwnerSay(body);
}
}
From: Russel Hansen
You know, I just had a thought.
This may actually be worse than the current system in some cases, such as when your processing is in bursts.
Currently, you could send 20 requests in 1 second, as long as you then wait out the timer window before doing anymore. With a 1 sec/object limit, you'll have to be more concious of response times between requests.
The wiki doesn't mention anything about script delay on the current command, so we may need to all add a llSleep(1.0) after every llHTTPRequest, to ensure no lost requests (when doing mutiple requests at once or on a non-predicatble schedule that is).
Good news is bursts still work fine, only now you can do 5 more at a time, and only wait 40 seconds before doing it again

My testing showed no script delay with llHTTPRequest(), the loop was done very quickly, so if you have no idea what the request rate is gonna be for your item, then a llSleep probably would be a good idea. Then again that's true with 1.12.0
