超时 - 在PHP脚本期间的加载程序

时间:2014-02-11 15:10:55

标签: javascript php jquery mysql

我有一个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();
        }
    });
    }

3 个答案:

答案 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脚本中

您可以在PHP脚本的顶部使用set_time_limit()来防止超时。

set_time_limit(0); //no timeout

在php.ini

如果您的主持人支持,您也可以设置max_execution_time in php.ini

max_execution_time 0