1

我正在使用 WooCommerce 的“REST API”(有史以来最糟糕的决定)试图从外部提要批量插入/编辑产品。这对我来说效果很好,但肯定是 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 的任何事情都需要几个小时)它已经完成了将 100 个项目的单个批量发送到 WooCommerce 的迭代。在其中一个错误发生期间,它不依赖于发送的内容。

即使它出错,它仍然返回201 - CreatedHTTP 状态,因为它至少创建了 100 种产品中的一些,而且我查看了代码,它只是重用了单个创建代码,所以它无法返回正确的状态批量失败的代码,因为其中一项成功了。

最重要的是,每次发生这种情况时,它也恰好运行了 180 秒,所以我相信这是 WooCommerce 方面的超时,因为我一直将 CURL 请求和 PHP 超时设置为 6小时。所以我需要知道的是迫使 WooCommerce 完成的最轻松的方法。我也不应该真正编辑 WooCommerce,所以如果可以不这样做(最好不重新配置服务器),那就太好了。

我想如果这真的只是 WooCommerce 的完全监督,除了编辑它别无选择,但希望他们只是错过了解释如何设置超时限制的文档中的一些内容。到目前为止,我还没有看到类似的东西,但是注意到了其他事情,如果早点知道会有很大帮助,这些事情也被遗漏在文档中,所以谁知道......

4

1 回答 1

4

你应该增加default_socket_timeoutin php.ini,如果你使用标准的 woocommerce 库,你必须增加const TIMEOUT invendor/automattic/woocommerce/src/WooCommerce/HttpClient/Options.php

于 2018-09-27T21:40:44.720 回答