我有一个php脚本,它在我的mysql dbb上插入大的结果。 我做了jquery脚本来等待php脚本的结束。 但我有一个超时错误。 您是否有想要更改超时以让脚本完成其工作?
谢谢
Jquery脚本:
<script type="text/javascript">
var dataReturn='';
function makeRequest(url){
$('#preloader').show();
$.get(url, function(data) {
timeout: timeoutvalue
$('#resultDiv').html(data);
$('#preloader').hide();
}).fail(function() {
alert( 'Error occured during requesting the page' );
$('#preloader').hide();
});
}
function makePostRequest(url, params){
$('#preloader').show();
$.post(url,params, function(data){
$('#resultDiv').html(data);
$('#preloader').hide();
}).fail(function() {
alert( 'Error occured during requesting the page' );
$('#preloader').hide();
});
}
</script>
<style>
#preloader{
display:none;
}
</style>
启动脚本的按钮:
<input type="submit" onClick="makeRequest(\'inserttodbb.php?fonction=import_csv\')" value="" style="width:59px; height:17px; background:url(images/button-importstart.png) repeat-x left center;border:0;margin-left:0px; float:center;" />
Php page inserttodbb.php:
if(isset($_GET['fonction']) and $_GET['fonction']=="import_csv_valid")
{
$data=$_SESSION['listeok'];
$count=count($data);
foreach($data as $numero)
{
$req=("INSERT INTO contact VALUES('".$idclient."','', '".$numero."','','','','','','','0')");
$doins = mysql_query($req) or die(mysql_error());
}
echo 'Import OK for '.$count.' number !';
}
我加载php页面时没有超时问题。 但是当我尝试使用ajax加载器时,我遇到了“请求页面时出错”消息的问题。我试图将超时设置为900000,但问题仍然存在。 一个想法?
function makeRequest(url){
$('#preloader').show();
$.ajax({
type: "GET",
url: url,
timeout: 9000000, //10 seconds, define this value in milliseconds
success: function(data){
$('#resultDiv').html(data);
$('#preloader').hide();
},
error: function() {
alert( 'Error occured during requesting the pagesssssss' );
$('#preloader').hide();
}
});
}
答案 0 :(得分:1)
您可以做的是将set_time_limit(0);
放在脚本的顶部。这将确保您的脚本不会超时。
但是,这可能不是最佳解决方案,您还应该调查脚本超时的原因,以及是否可以一次性减少需要完成的工作量。
答案 1 :(得分:1)
如果超时是在ajax调用中(不是PHP脚本),您可以使用:
function makeRequest(url){
$('#preloader').show();
$.ajax({
type: "GET",
url: url,
timeout: 10000, //10 seconds, define this value in milliseconds
success: function(data){
$('#resultDiv').html(data);
$('#preloader').hide();
},
error: function() {
alert( 'Error occured during requesting the page' );
$('#preloader').hide();
}
});
}
编辑:
另一种选择是定义全局超时值。在调用makeRequest()之前将它放在代码中。
$.ajaxSetup({
timeout:10000 // 10 seconds
});
答案 2 :(得分:0)
您可以在PHP脚本的顶部使用set_time_limit()
来防止超时。
set_time_limit(0); //no timeout
如果您的主持人支持,您也可以设置max_execution_time
in php.ini:
max_execution_time 0