使用javascript定期运行PHP脚本,间隔时间

时间:2015-01-21 12:33:34

标签: javascript php setinterval scheduler

有没有使用JavaScript定期运行php脚本? 我在JavaScript中尝试了几个事件和时间,但我仍然不满意 我创建了一个php文件来从url中检索json文件 现在我想在用户在输入中设置的每个间隔时间运行我的php文件。

我的表格有以下特点:

URI
启动
完成
间隔

这是我的php代码:

function toCsv(){
    //Date Format
    $date=date("M-d-Y, \a\\t g.i a", time());
    //URI API Endpoint
    //$uri="https://data.cityofchicago.org/resource/t2qc-9pjd.json";
    $uri= $_POST['input_uri'];
    //Time interval
    $interval= $_POST['set_timer'];
    //Named File
    $file_name= $_POST['file_name'];
    //Get File JSON
    $json=file_get_contents($uri);

    $filecsv = fopen("dataset/csv/dataset-".$file_name."-".$date.".csv", "w") or die("Unable to open file!");
    $array = json_decode($json, true);
    $firstLineKeys = false;
    foreach ($array as $line)
    {
        if (empty($firstLineKeys))
        {
            $firstLineKeys = array_keys($line);
            fputcsv($filecsv, $firstLineKeys);
            $firstLineKeys = array_flip($firstLineKeys);
        }

        fputcsv($filecsv, array_merge($firstLineKeys, $line));
    }    
}

3 个答案:

答案 0 :(得分:1)

只需使用setInterval并运行ajax请求(示例中每5秒)

setInterval(function(){
   $.post('1.php?', {input_uri:"value", set_timer:"value", file_name:"value"}, 
    function(data){            
      //do something with the information returned from the php file
    }, 'html')
   }, 5000);

你应该替换"价值"使用输入字段的实际值(例如input_uri:$("#input_uri").val(),

答案 1 :(得分:0)

怎么样......

function getJSON(){
    setTimeout(function(){ 
        $.post( "YOUR PHP FILE NAME", {input_uri : "//form data", file_name : "//form data" } )
        .done(function( data ) {
            alert("php function ran");
        });
        getJSON();
    }, 3000); // Edit this timing here to set the interval (milliseconds)
}

在你的php文件中你只需要确保你在底部运行你的功能......

        fputcsv($filecsv, array_merge($firstLineKeys, $line));
    }    
}

toCsv();

希望这有帮助!

答案 2 :(得分:0)

另一种简单的方法是在您的主页上执行此操作:

<iframe src="csv_file.php?input_uri=value[...]" style="display:none;"></iframe>

在你的csv_file.php上,你在最后加上这一行:

<meta http-equiv="refresh" content="5">

5刷新的秒数。

此方法不需要任何 javascript,并且适用于大多数网络浏览器(纯文本浏览器和禁用iframe的浏览器除外)。


如果用户需要编辑该值,可以发送表单(无论以何种方式发送)并添加参数。

为简单起见,可以称之为refresh 使用参数的示例:

您可以在主页面中使用它:

<iframe src="csv_file.php?input_uri=value[...]&refresh=5" style="display:none;"></iframe>

csv_file.php上,您可以使用:

<meta http-equiv="refresh" content="<?php echo isset($_REQUEST['refresh']) && ($_REQUEST['refresh']=(int)$_REQUEST['refresh'])?$_REQUEST['refresh']:'5'; ?>">