From 3a9fc174740bf913174baf462a374e8aed0e7b1d Mon Sep 17 00:00:00 2001
From: s j <sj@1729.be>
Date: Thu, 28 Apr 2022 06:28:48 +0200
Subject: [PATCH] imp: adjust dividend batch size to max execution time

---
 .../shareholder_register_dividend/src/DividendService.php | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/modules/shareholder_register_dividend/src/DividendService.php b/modules/shareholder_register_dividend/src/DividendService.php
index ed395a7c..488b21cf 100644
--- a/modules/shareholder_register_dividend/src/DividendService.php
+++ b/modules/shareholder_register_dividend/src/DividendService.php
@@ -136,10 +136,16 @@ class DividendService implements DividendServiceInterface {
       $context['sandbox']['shareholder_ids_count'] = count($context['sandbox']['shareholder_ids']);
     }
 
+
     $process_plugin = DividendService::getDividendProcessDefinition($dividend_config['process']);
     $process_plugin->init($context, $dividend_config);
 
-    for ($i = 0; $i < 100; $i++) {
+    $max_execution_time = ini_get('max_execution_time');
+    if (!is_numeric($max_execution_time) || $max_execution_time <= 1) {
+      $max_execution_time = 30;
+    }
+    $max_time = time() + ($max_execution_time * 0.8);
+    for ($i = 0; $i < 100 && time() < $max_time; $i++) {
       if ($shareholder_id = array_pop($context['sandbox']['shareholder_ids'])) {
         $shareholder = Shareholder::load($shareholder_id);
 
-- 
GitLab