我制作了一个从WooCommerce中提取产品的脚本和一个更新WooCommerce中库存的脚本。该店有大约750种母产品,这些母产品下的变体总数约为4500种。我将Automatic的PHP SDK用于WooCommerce。
当我运行我的;“提取产品”;函数将所有产品信息保存在外部数据库中,它将正常运行。但如果15分钟后重新运行脚本,我会收到以下消息:
Fatal error: Uncaught Automattic\\WooCommerce\\HttpClient\\HttpClientException: Error: <p>En kritisk feil har inntruffet på ditt nettsted.</p><p><a href="https://wordpress.org/support/article/debugging-in-wordpress/">Lær mer om feilsøking i WordPress.</a></p> [internal_server_error] in /Applications/XAMPP/xamppfiles/htdocs/portland_integrasjon/wc/inc/HttpClient/HttpClient.php:350 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/portland_integrasjon/wc/inc/HttpClient/HttpClient.php(386): Automattic\\WooCommerce\\HttpClient\\HttpClient->lookForErrors(Object(stdClass)) #1 /Applications/XAMPP/xamppfiles/htdocs/portland_integrasjon/wc/inc/HttpClient/HttpClient.php(422): Automattic\\WooCommerce\\HttpClient\\HttpClient->processResponse() #2 /Applications/XAMPP/xamppfiles/htdocs/portland_integrasjon/wc/inc/Client.php(82): Automattic\\WooCommerce\\HttpClient\\HttpClient->request(\'products\', \'GET\', Array, Array) #3 /Applications/XAMPP/xamppfiles/htdocs/portland_integrasjon/wc/wc-procucts-extract.php(8): Automattic\\WooCommerce\\Client->g in /Applications/XAMPP/xamppfiles/htdocs/portland_integrasjon/wc/inc/HttpClient/HttpClient.php on line 350
错误信息是挪威语,但英语是这样写的:您的网站上发生了严重错误。
我使用的API调用;“提取产品”;是:
$products = $woocommerce->get(\'products\', $parameters=[\'per_page\' => 99999]);
$productVariation = $woocommerce->get(\'products/\'.$productId.\'/variations/\'.$child);
如果我再等几分钟,为WooCommerce运行另一个API,我们可以说;更新库存;,然后重新运行“;提取产品“;,一切正常。
所以我的问题是:我希望能够重新运行“;“提取产品”;函数多次运行,而无需等待或先运行另一个API命中。
有什么建议吗?
最合适的回答,由SO网友:phingoc 整理而成
所以,在花了整整一周的时间处理这个问题后,我终于找到了解决办法。
在我的原始脚本中,我要求使用以下产品系列购买99999种产品:
$products = $woocommerce->get(\'products\', $parameters=[\'per_page\' => 99999]);
我在函数中也有这个函数。WP中的php:
function maximum_api_filter($query_params) {
$query_params[\'per_page\']["maximum"]= 99999;
return $query_params;
}
add_filter(\'rest_product_collection_params\', \'maximum_api_filter\');
我对脚本所做的新更改是“我更改了”;每页“;到100,然后循环x次,最后合并阵列。
新的解决方案运行良好,我之前遇到的致命错误是maybe Wordpress试图一次性为我提供数百种产品,这可能导致服务器过载或触发了某些内容。不知道这是肯定的,但新的解决方案工作得很好。