I've got a jQuery ajax call which goes of to the server backend.php script and told to sleep for 13 seconds (or more) before responding with a simple test message. What I'm seeing is the ajax success function triggering (with a 200 response observed in firebug) after 10 seconds with no actual response from the server. If I set the response delay to less than 10 seconds I get the response message perfectly.
Is this something you've seen before? Is there some default php timeout thing going on?
ajaxcall = $.ajax({
type: "GET",
url: "backend.php",
async: true,
cache: false,
dataType: 'json',
timeout: 30000,
/* Timeout in ms. Default to 30000 (30 seconds) */
data: "TimeStamp=" + TimeStamp,
success: function(data) {
if (data !== null) {
$('#TextHistory').append(data.message);
if (data.timestamp != 0)
{
TimeStamp = data.timestamp;
}
}
setTimeout(
waitForMsg, /* Request next message */
5000 /* ..after 5 seconds, default to 5000*/ );
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#TextHistory').append('<p>Error:' 开发者_运维问答+ errorThrown + '</p>');
setTimeout('waitForMsg()',"15000"); /* milliseconds (15seconds) default to 15000 */
}
});
}
..and on the server side i'm simply doing this:
<?php
header('Content-Type: application/json');
sleep(13); // Changing this to test it. Will only work if less than 10
$When = date("H:i:s",strtotime("now"));
$response["message"] = "<p>Small Test $When</p>";
$response["timestamp"] = 123456789;
echo json_encode($response);
?>
Definitely its timing out after 10 seconds
Place a call to phpinfo()
on a blank page and see what the timouts are set to
Look at max_execution_time for one
It'll just need to be overriden in a php.ini file or in the PHP directly
精彩评论