我使用一个php函数来更新定量,价格etcc在我的WordPress网站每天。
下面是函数:
<?php
use Automattic\WooCommerce\Client;
function UpdateStock()
{
require __DIR__ . '/vendor/autoload.php';
set_time_limit(10000); //temps limite d'éxecution du code
$filename = "path to csv file on a ftp"; //chemin vers le fichier csv du serveur ftp
$handle = fopen($filename, "r");
while (!feof($handle)) {
$ligne[] = fgetcsv($handle, ',');
}
fclose($handle);
$woocommerce = new Client(
// Your store URL
// Your consumer key
// Your consumer secret
[
'wp_api' => true, // Enable the WP REST API integration
'version' => 'wc/v3', // WooCommerce WP REST API version
'query_string_auth' => true,
'verify_ssl' => false
]
);
for ($item = 1; $item < count($ligne); $item++) {
$cell = $ligne[$item];
if ($cell[13] == "0") { //change la valeur 0 en outofstock
$statue = "outofstock";
} elseif ($cell[13] == "1") {
$statue = "instock";
} elseif ($cell[13] == "backorder") {
$statue = "onbackorder";
} else {
$statue = "outofstock";
}
if ($cell[1] == "simple") { // vérifie si le produit est un produit simple
$data = [ //récupère les données descriptions, stoc_status, short description
"description" => $cell[7],
"name" => $cell[3],
"stock_status" => $statue,
"Short description" => $cell[8],
"regular_price" => $cell[25],
"sale_price" => $cell[24]
];
try {
$woocommerce->put('products/' . $cell[0], $data); // ajoute les données récupérées au produits
} catch (Exception $e) {//si les infos n'ont pas été importés, affiche le message d'erreur
echo 'une erreur est survenue à l article ' . $cell[0] . '</br>';
}
} else {
$data = [
"description" => $cell[7],
"name" => $cell[3],
"stock_status" => $statue,
"regular_price" => $cell[25],
"sale_price" => $cell[24]
];
$path = 'products/' . $cell[43]. '/variations/'.$cell[0];
echo $path;
try {
$woocommerce->put($path, $data);
} catch (Exception $e) {
echo 'une erreur est survenue à l article ' . $cell[0] . '</br>';
}
}
}
}
?>
我使用PHP Cron status来检查函数是否执行,但它总是以5分钟的执行超时和PHP Cron status上的“未完成”状态结束。另外,我将最大内存分配设置为2048Mb,因为我有关于内存不足的错误日志。
是否有任何方法可以使此工作正常或获得有关错误的更多详细信息?谢谢
几乎可以肯定是记忆问题。检查excel文件的大小,看看它可能会消耗多少内存(请记住,对于相同的数据集,php数组比CSV文件需要更多的内存)。您正在循环通过一个非常起伏的数组(根据您的内存限制约2GB),这使得执行非常缓慢。一次处理一个csv行,这样就不必一直将所有数据保存在php内存中。
function updateStock()
{
$filename = "path to csv file on a ftp"; //chemin vers le fichier csv du serveur ftp
$woocommerce = new Client(
[
'wp_api' => true, // Enable the WP REST API integration
'version' => 'wc/v3', // WooCommerce WP REST API version
'query_string_auth' => true,
'verify_ssl' => false
]
);
$handle = fopen($filename, "r");
while (!feof($handle)) {
$item = fgetcsv($handle, ',');
processItem($woocommerce, $item);
unset($item); // sometime php gc doesn't work properly, so it's better to explicitly free memory for heavy variables.
}
fclose($handle);
}
function processItem(Client woocommerce, array $cell)
{
if ($cell[13] == "0") { //change la valeur 0 en outofstock
$statue = "outofstock";
} elseif ($cell[13] == "1") {
$statue = "instock";
} elseif ($cell[13] == "backorder") {
$statue = "onbackorder";
} else {
$statue = "outofstock";
}
// ... the rest of your code here
}
顺便问一下,为什么您需要在函数中自动加载?看起来很奇怪。
null openssl pkcs12-export-in cert1.pem-inkey privkey1.pem-out cert_and_key.p12-name certificate-cafile fullchain1.pem-caname root keytool-importKeystore-destStorePAS5W0RD123-destKeypass Pas5w0rd123-d
描述 (Description) 当行不包含最多12个列时,Foundation会自动向右浮动最后一个元素。您可以将.end类包含在最后一个元素中,以使元素向左浮动。 例子 (Example) 以下示例演示了在Foundation中使用incomplete-rows - <!DOCTYPE html> <html> <head> <title>Foundation Templat
我买了一个2.2米的模板,wordpress的限制设置为2米。 我正在托管服务器,因此我可以完全访问文件 > 然后设置php.ini不工作: php.ini//和php5.ini upload_max_filesize=32Mpost_max_size=32M 还尝试设置: wp-config.php定义(WP_MEMORY_LIMIT,64M); 也试过: No. htaccess file p
问题内容: 问题描述 除其他事项外,我对模糊进行了管理,我想仅将其用于属性。问题是,如果设置为,它将完成并删除所有我想保留的动画。 基本上,我不希望动画师完成,因为这会清除其动画块。 考虑的解决方法 完成后重新添加动画 夹到类似 问题答案: 现在可以使用iOS11进行设置 在 当此属性的值为true时,动画制作结束时动画制作器将保持活动状态,并且不执行其完成处理程序。保持动画师处于活动状态,即使动
我正在实施v2 Express Checkout Paypal集成;它工作正常,但是它并没有完全完成交易(商业帐户不接收付款)。 > 将生成令牌和订单ID。 我复制并粘贴给定的链接到URL栏,然后按回车键继续完成交易。。 事务完成并重定向到新的URL
我正在将一个KML文件导入到fusion表中,发现缺少行—我只得到前4行。我在Google Earth中检查了该文件,所有多边形都显示得很好,因此我确信KML文件没有损坏。 当我第一次在GoogleDrive表中打开该文件时,它有一个注释,其中有17%是导入的,但随后就消失了。似乎导入没有完成。该文件为20MB。 任何提示或建议。我环顾四周,没有发现类似的问题。感谢指导员! PS:如果您对以下问题