0

我有一个用php编写的大脚本,它应该在prestashop安装中导入很多信息,使用webservices,这个脚本写在“部分”我的意思是,有一个导入类别的功能,另一个导入产品的功能,然后是制造商,等等,主脚本中调用了大约 7-10 个函数。基本上我假设这个脚本必须运行大约一个小时,从一个函数传递到下一个函数,依此类推,因为它到达最后一个函数,然后返回一些值并停止到第二天晚上。

我想了解它是否会更好:

1) 每次我输入一个新功能时施加 30 分钟的时间限制(这将防止超时)

2)制作一系列页面,每个页面都有一个函数调用(当然还有时间限制)

或任何其他想法...我想:知道是否已调用函数(可能使用全局变量?)确保服务器将按顺序执行该函数(因此页面链)...

我希望已经清楚,否则我会更新问题。

编辑:脚本由另一台将调用页面的服务器执行,另一台服务器对我来说是“未知的”,所以我只知道这个页面被调用(他们也可以通过在页面上调用该函数)但无论如何我无法控制它。

4

2 回答 2

1

对于任何长时间运行的脚本,我会通过命令行运行它,可能会使用 cronjob 来启动它。如果它是从外部触发的,我将创建一个作业队列(例如在数据库中),在其中插入一个新行以表示它应该运行,以及任何可变输入参数。然后后台作业将运行 - 比如说 - 每 5 分钟一次,检查队列中是否有新作业。如果没有,就退出。如果有,标记它已经开始工作并开始处理。完成后,标记它已完成。

不过,1 小时的工作时间太长了。你能做些什么来优化它?

于 2013-02-21T11:49:52.270 回答
0

您可以根据需要增加执行脚本的时间限制:

set_time_limit(seconds);

而且对于长时间运行的脚本,您需要更多内存。您可以使用以下方法增加内存限制:

ini_set('memory_limit','20M');

您必须确保的第二件事是您在专用服务器上运行脚本,因为如果您使用共享服务器,您的服务器将自动终止长时间运行的脚本。

于 2013-04-13T11:00:35.430 回答