erp->LoadModul('belegeimport'); /** @var BelegeImporterService $belegeimportService */ $belegeimportService = $belegeimport->getImporterService(); if (!$app->DB->Select("SELECT id FROM prozessstarter WHERE mutex = 0 AND parameter = 'belegeimport' AND aktiv = 1")) { $app->DB->Update("UPDATE prozessstarter SET mutexcounter = mutexcounter + 1 WHERE mutex = 1 AND parameter = 'belegeimport' AND aktiv = 1"); return; } $app->DB->Update("UPDATE prozessstarter SET mutex = 1, mutexcounter = 0 WHERE parameter = 'belegeimport' AND aktiv = 1"); $result = $app->DB->SelectArr("SELECT * FROM belegeimport_running WHERE command IN ('upload','write') ORDER BY id LIMIT 1"); if (count($result) > 0) { $r = $result[0]; if($r['command']=='upload'){ //Der Prozessstarter bricht den alten Belegeimportprozess nicht ab, der Mutex wird aber irgendwann zurückgesetzt. //Damit er nicht weitere Dateien beginnt abzuarbeiten: $isWorking = $app->DB->Select("SELECT id FROM belegeimport_running WHERE command IN ('preparing','processing')"); if(!empty($isWorking)){ $app->DB->Update("UPDATE prozessstarter SET mutex = 1, mutexcounter = 0 WHERE parameter = 'belegeimport' AND aktiv = 1"); return; } //Um Mehrfachausführung im Prozessstarter zu vermeiden $app->DB->Update("UPDATE belegeimport_running SET command='preparing' WHERE id = '".$r['id']."'"); $belegeimportService->BelegeimportRun($r['filename'], $r['art'], $r['status'],false,null,$r['userid']); $app->DB->Update("UPDATE belegeimport_running SET command='ready' WHERE id = '".$r['id']."'"); unlink($r['filename']); } elseif($r['command']=='write'){ //Der Prozessstarter bricht den alten Belegeimportprozess nicht ab, der Mutex wird aber irgendwann zurückgesetzt. //Damit er nicht weitere Dateien beginnt abzuarbeiten: $isWorking = $app->DB->Select("SELECT id FROM belegeimport_running WHERE command IN ('preparing','processing')"); if(!empty($isWorking)){ $app->DB->Update("UPDATE prozessstarter SET mutex = 1, mutexcounter = 0 WHERE parameter = 'belegeimport' AND aktiv = 1"); return; } //Um Mehrfachausführung im Prozessstarter zu vermeiden $app->DB->Update("UPDATE belegeimport_running SET command='processing' WHERE id = '".$r['id']."'"); $belegeimportService->BelegeimportAll(null, false,$r['userid'],$r['art']); $app->DB->Delete("DELETE FROM belegeimport_running WHERE id=".$r['id']); } } $app->DB->Update("UPDATE prozessstarter SET mutex = 0 , mutexcounter = 0 WHERE (parameter = 'belegeimport' ) AND aktiv = 1");