仅在DB中设置一次

时间:2016-02-26 13:44:05

标签: javascript php mysql

我正在使用setInterval来检测从PLC(可编程逻辑控制器)获取的值。当它1时,它执行一个在我的MYSQL数据库中插入数据的PHP页面。

因此,当我按住我的按钮超过1秒时,它会多次设置DB值。

您可以在下面找到我的代码:

var Axo800RstBtn;

setInterval(function()
{
    Axo800RstBtn = document.getElementById('Axo800BtnStatus').innerHTML;
    var BatchUnits1 = document.getElementById('Axo800BatchProduction').innerHTML;

    if(Axo800RstBtn == 1)
    {   
        $.ajax({
        method: "POST",
        url: "SetBatchProductionInDB.php",
        data: { 
                machineNumber: 1,
                actualProduction: BatchUnits1 
              }     
        })
        .done(function(msg)
        {
            console.log("Bericht: " + msg);
        })
    }
},1250);

有没有办法告诉我的页面每1分钟只能执行一次?某种阻止。或者可能是执行查询的一个块?

1 个答案:

答案 0 :(得分:1)

这可以解决问题:

CREATE TABLE IF NOT EXISTS $TABLE ...

虽然我强烈建议你也做这个控制服务器端。 I.E.您可以通过在PHP中设置会话变量来跟踪被调用的脚本。

此代码将阻止在请求发送一次后立即发送请求。如果要在60秒后启用它,可以在hasBeenSet = true;

之后添加
var Axo800RstBtn;
var hasBeenSet = false;

setInterval(function()
{
    Axo800RstBtn = document.getElementById('Axo800BtnStatus').innerHTML;
    var BatchUnits1 = document.getElementById('Axo800BatchProduction').innerHTML;

    if(Axo800RstBtn == 1 && !hasBeenSet)
    {   

        hasBeenSet = true;

        $.ajax({
        method: "POST",
        url: "SetBatchProductionInDB.php",
        data: { 
                machineNumber: 1,
                actualProduction: BatchUnits1 
              }     
        })
        .done(function(msg)
        {
            console.log("Bericht: " + msg);
        })
    }
},1250);