我已经运行在每个晚上更新记录在我的数据库的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
答案 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”,那没什么大不了的?死亡()。