configurable import batch size
authorJon Goldberg <jon@megaphonetech.com>
Fri, 28 Apr 2023 20:27:07 +0000 (16:27 -0400)
committerJon Goldberg <jon@megaphonetech.com>
Fri, 28 Apr 2023 20:27:07 +0000 (16:27 -0400)
CRM/Admin/Form/Setting/Miscellaneous.php
CRM/Import/Parser.php
settings/Core.setting.php

index 722fef9cda79fe721358138eea69212219b93b71..51ddc220e670e467ce0d30d2ee16540e7e13618e 100644 (file)
@@ -42,6 +42,7 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting {
     'remote_profile_submissions' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
     'allow_alert_autodismissal' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
     'prevNextBackend' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME,
+    'import_batch_size' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME,
   ];
 
   /**
@@ -62,6 +63,7 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting {
       'recentItemsProviders',
       'dedupe_default_limit',
       'prevNextBackend',
+      'import_batch_size',
     ]);
   }
 
index 05a6c65aed61b10cc2bfbb85f1ecfc4a794d30ef..bfce7cdaef37c4f0a33b49a54311d6083fa9fcd4 100644 (file)
@@ -672,7 +672,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     $queue = Civi::queue('user_job_' . $this->getUserJobID(), ['type' => 'Sql', 'error' => 'abort', 'runner' => 'task', 'user_job_id' => $this->getUserJobID(), 'retry_limit' => 5]);
     UserJob::update(FALSE)->setValues(['queue_id.name' => 'user_job_' . $this->getUserJobID()])->addWhere('id', '=', $this->getUserJobID())->execute();
     $offset = 0;
-    $batchSize = 50;
+    $batchSize = Civi::settings()->get('import_batch_size');
     while ($totalRows > 0) {
       if ($totalRows < $batchSize) {
         $batchSize = $totalRows;
index 42d90b7c7cd3a293ddb3da8fb95e84e5c0a9c5c4..f0db59869d13f94f7ac1c9b74d9f56729f396196 100644 (file)
@@ -1006,6 +1006,24 @@ return [
       'callback' => 'CRM_Utils_Recent::getProviders',
     ],
   ],
+  'import_batch_size' => [
+    'name' => 'import_batch_size',
+    'type' => 'Integer',
+    'default' => 50,
+    'quick_form_type' => 'Element',
+    'html_type' => 'text',
+    'html_attributes' => [
+      'size' => 2,
+      'maxlength' => 3,
+    ],
+    'add' => '5.62',
+    'title' => ts('Import Batch Size'),
+    'is_domain' => 1,
+    'is_contact' => 0,
+    'description' => ts('Number of records to process at once during import.'),
+    'help_text' => ts('If your imports time out, reduce this number. You can increase it for better import performance on servers with longer timeouts.'),
+    'settings_pages' => 'misc',
+  ],
   'dedupe_default_limit' => [
     'group_name' => 'CiviCRM Preferences',
     'group' => 'core',