我的设置是对php文件的jquery ajax调用。如果php处理时间达到大约40秒,则jquery可以正常工作。如果php需要处理更长时间,则ajax调用将失败。
jquery代码:
$.ajax({
url: "http://example.com/path/to/folder/phpfile.php",
type: "post",
success: function(data){
alert("good!");
},
error:function(xhr,status,error){
alert("failure");
console.log(status, error);
}
});
PHP文件:
set_time_limit(0); // no time limit is imposed
header("HTTP/1.1 200 OK");
sleep(55); //this will trigger error if >40
echo "1";
exit();
.htaccess文件: (这是为了将所有www.example.com电话重定向到http://example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
我试过了: 1)在php文件的开头发送200 ok代码 2)我在php文件中有一个set_time_limit(0),所以它不应该超时。 3)我使用非永久链接作为php文件的直接地址
导致此行为的原因是什么?如何解决?
答案 0 :(得分:1)
为了将来参考,我设法解决了这个问题。
此代码有效:
header('Cache-Control: no-cache');
set_time_limit(0); // no time limit is imposed
for($i = 1; $i <= 8; $i++) {
echo "$i<br>";
sleep(10);
ob_flush();
flush();
};
echo "stop";
exit();
所以解决方法是在文件顶部添加“header no cache”命令,并在执行期间每隔10秒左右添加一个echo后跟ob_flush(ob称为php Output Buffers)和flush命令。 php脚本。
我希望您会发现此解决方案对您有所帮助