在DB PHP脚本更新记录当脚本已运行超过30分钟

时间:2019-02-02 18:32:55

标签: php mysql apache

我已经运行在每个晚上更新记录在我的数据库的PHP脚本。 在我的数据库中,我还记录了该脚本:

文件名

script1.php

完成

N

脚本完成后,我对数据库进行了最后一次更新,这就是更新'script1.php'并将其更改为'Y'

如果我删除一切在该文件中,除了对DB最后一次通话则脚本改变“N”到“Y”就好了。

问题在于,在标记为完整之前,我需要获取记录并将其插入到数据库中,这总共需要38分钟。

这可能是我的问题,经过38分钟的剧本完成但它不更新的“N”到“Y”。

代码

def function1(inputlist):
    #does something to inputlist

def function2(inputlist):
    #does same thing to inputlist as before but in different way

time1 = timeit.timeit(stmt="function1(random.sample([x for x in range(0, 20000), 10)",setup = "from file import function1,input",number=100)

time2 = timeit.timeit(stmt="function2(random.sample([x for x in range(0, 20000), 10)",setup = "from file import function2,input",number=100)

i=0
while time1<time2:
    time1 = timeit.timeit(stmt="function1(random.sample([x for x in range(0, 20000), i)",setup = "from file import function1",number=100)

    time2 = timeit.timeit(stmt="function2(random.sample([x for x in range(0, 20000), i)",setup = "from file import function2",number=100)

    i = i+1

print(i)

这些是服务器上的配置设置,我无法更改,因为这些已经是我允许的最大设置。

尽管我收到504网关超时,但记录仍继续插入到DB中。所有记录均已完美插入,但是此“ N”不会更改为“ Y”。

如何使脚本运行足够长的时间,以将该“ N”更新为“ Y”?

作为请求的代码

timeit

1 个答案:

答案 0 :(得分:0)

脚本是通过cron运行的吗?使一些限制器限制脚本执行。 您可以使cron每分钟触发一个小时,但要记录$ script_is_busy == true和update_is_done = false的地方。在限制器达到限制之后,请确保$ script_is_busy = false并记录进行了多长时间的更新。一分钟后,下一个cron迭代将继续更新。更新完成后,日志$ update_is_done = true;。 如果cron发出unempty_is_dome == true这样的“空scipt”,那没什么大不了的?死亡()。