我正在开发一个用于wordpress的插件,该插件可以通过多个API调用导入大量数据并将其另存为woocommerce产品。
问题是,当商店有数百种(如果不是数千种)产品时,它开始对导入作业的时间造成损失,从而导致各种各样的超时。使用“ set_time_limit(xx)”之类的命令扩展导入有效,但是某些服务器似乎仍然具有自己的故障保护功能,我认为我无法通过以下代码行绕过它们:
mod_zfpm(63616:7f14fca1b730:0)-F030E35B: stderr: Timeout (900s) exceeded while reading from socket (application) (fastcgi.c:941)'
我正在尝试找出哪种方法最正确。 到目前为止,我想到的选项是:
在出现错误时使用“ register_shutdown_function()”重新启动导入(可能是一个非常糟糕的主意)
将作业分为一系列小型cron作业(更安全的替代方法,但可能很耗时且令人费解)
我应该选择选项2,还是有更好的方法来处理长期运行的任务?
注意:由于它是WP的插件,因此我无法采用许多重复线程中建议的解决方案,因为该插件将在许多不同的服务器上使用。
答案 0 :(得分:0)
我还是php的新手,但是我曾经遇到过类似的事情,但是情况并不完全相同,使用的解决方案是
1)将数据转换为JSON格式。
2)这是一个SQL数据库,是使用Ajax发出的请求
3)请求是根据需要显示的数据量成组进行的
4)请求中的多余边界导致它返回具有偏移量的所有数据,然后如果返回数据,则偏移量增加,并发出另一个请求,并将第二组返回的数据附加到第一组之后
5)在异步更新数据数组时,将在数据更改时附加一个JavaScript事件侦听器以重新加载显示
虽然这个答案不能解决您的问题,但我希望它能给您一个想法。