我正在使用WooCommerce' REST API' (最糟糕的决定)试图从外部Feed批量插入/编辑产品。这对我来说非常有用,但是只有必须成为WooCommerce失败的东西而且它会影响我自己的进步,因为任何(可变的)方式都可以我尝试批量插入/编辑的数量为100次,我将收到错误报告Invalid JSON returned for...
。
wooStockUpdate: Saving products to WooCommerce via bulk update/insert
wooStockUpdate: 4% products processed - estimated time left: 2394.48s
wooStockUpdate: 9% products processed - estimated time left: 2758.21s
wooStockUpdate: 14% products processed - estimated time left: 2412.816s
wooStockUpdate: 19% products processed - estimated time left: 2308.176s
wooStockUpdate: 23% products processed - estimated time left: 2961.035s
wooStockUpdate: 28% products processed - estimated time left: 2047.248s
wooStockUpdate: 33% products processed - estimated time left: 2017.906s
wooStockUpdate: 38% products processed - estimated time left: 1881.7s
wooStockUpdate: 42% products processed - estimated time left: 2359.295s
Invalid JSON returned for http://wholefoodearthdev/wc-api/v3/products/bulk?...
201
每次报告一个百分比(和估计的时间,因为任何使用REST API的时间都需要几个小时),它已经完成了向WooCommerce发送100个项目的单个批量的迭代。在其中一个错误发生期间,它不依赖于发送的内容。
即使它出错,它仍然会返回201 - Created
HTTP状态,因为它至少创建了100个产品中的一部分,而且我已经查看了代码,它只是重用了单数创建代码,因此它无法返回批量失败的正确状态代码,因为其中一个项目成功。
最重要的是,每次这种情况发生时,它恰好已经运行了相当长的180秒,所以我相信这是WooCommerce的一次超时,因为我和#39;已经在6小时内设置了我的CURL请求和PHP超时。因此,我需要知道的是迫使WooCommerce完成的最无痛的方式。我不是真的应该编辑WooCommerce,所以如果没有这样做(最好没有服务器重新配置),它就会很棒。
我想如果这真的只是WooCommerce的完全疏忽,除了编辑它之外别无选择,但希望他们在文档中错过了解释如何设置超时限制的内容。到目前为止我还没有看到类似的东西,但是已经注意到其他事情,如果早些时候已经知道它们会有很多帮助,那些文档也会错过,所以谁知道...
答案 0 :(得分:2)
您应该在default_socket_timeout
中增加php.ini
,如果您正在使用标准woocommerce库,也必须在const TIMEOUT
中增加vendor/automattic/woocommerce/src/WooCommerce/HttpClient/Options.php