Я работаю над плагином для WooCommerce, который создает XML-файл, содержащий все товары из магазина. Следующий код используется для получения всех продуктов, который в большинстве случаев работает нормально.
$args = array(
'status' => array( 'publish' ),
'type'. => array( 'simple', 'variable', 'bundle', 'composite' ),
'offset' => $this->offset,
'limit' => $this->chunk_size,
);
$products = wc_get_products( $args );
while ( count( $products ) ) {
foreach ( $products as $product ) {
$output .= $this->render_entry( $product );
}
if ( ! wp_using_ext_object_cache() ) {
wp_cache_flush();
}
$args['offset'] += $this->chunk_size;
$products = wc_get_products( $args );
}
Даже в магазине с более чем 20 000 товаров это прекрасно работает. Однако, когда это хранилище также использует LiteSpeed Cache , использование памяти будет увеличиваться с каждым циклом while и приведет к:
Неустранимая ошибка PHP: исчерпан объем памяти, равный 1073741824 байт
- Предел памяти 1024M
- Кэш не очищается при использовании кеша объектов из LiteSpeed в этом коде, потому что это игнорирует назначение кеша
Есть ли способ уменьшить использование памяти PHP, сохранив предел памяти 1024M?