Hi there,
I’ve created a script that imports data from a CSV page (an export of Woocommerce orders) and creates new pages (merx orders) programatically from them.
The script worked well for a while but there are now 2,673 orders and every time I am importing a new page I am getting this memory error: "Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)"
I traced the error to the function resortSiblingsAfterListing in /kirby/src/Cms/PageActions.php specifically to this line (772-775):
$listed = $siblings
->listed()
->append($this)
->filter(fn ($page) => $page->blueprint()->num() === 'default');
This is run after I create the new page as draft and change the status to “listed”.
Just for reference, this is how I call the page creation function:
$imported_order = Kirby\Cms\Page::create( [
"template" => "order",
"model" => "order",
"draft" => true,
"parent" => page( "orders" ),
"slug" => Kirby\Toolkit\Str::slug( $order_data[ "wc_order_key" ] ),
"content" => $order_data,
] )->changeStatus( "listed" );
I am running this code on a Kirby v5 installation on a local MAMP server running PHP . Does this mean there are too many pages in the directory to complete the code?
I am also enclosing my (local) system info in case this helps (upgraded to Kirby v5.1.2 after seeing I wasn’t up to date but the error persists):
{
"info": {
"kirby": "5.0.1",
"php": "8.3.14",
"server": "Apache/2.4.62 (Unix) mod_wsgi/5.0.1 Python/3.12 mod_fastcgi/mod_fastcgi-SNAP-0910052141 OpenSSL/1.1.1w",
"license": "Unregistered",
"languages": [
"en",
"he"
]
},
"security": [
"The site is running locally with relaxed security checks",
"Debugging must be turned off in production",
"The Vue template compiler is enabled"
],
"plugins": [
{
"name": "bnomei/janitor",
"version": "5.3.0"
},
{
"name": "bvdputte/kirbylog",
"version": "2.2.0"
},
{
"name": "fontef/font-field",
"version": "?"
},
{
"name": "fontef/order-interface",
"version": "?"
},
{
"name": "fontef/royalties",
"version": "?"
},
{
"name": "fontef/typetool",
"version": "?"
},
{
"name": "rasteiner/whenquery",
"version": "0.5.0"
},
{
"name": "sylvainjule/multilist",
"version": "1.1.0"
},
{
"name": "typolog/csv-viewer",
"version": "?"
},
{
"name": "typolog/generator",
"version": "?"
},
{
"name": "typolog/helpers",
"version": "?"
},
{
"name": "typolog/price-table",
"version": "?"
},
{
"name": "typolog/specimen-block",
"version": "1.0.1"
},
{
"name": "ww/merx",
"version": "1.10.0"
}
]
}
Thanks!