# Skriptlaufzeit verlängern

**URL:** <https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652>\
**Category:** Deutsches Forum\
**Tags:** development\
**Created:** [March 3, 2021, 11:16am UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652 "2021-03-03T11:16:17Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![itnic](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/i/ec9cab/32.png) [@itnic](https://forum.oxid-esales.com/u/itnic)\
**Post date:** [March 3, 2021, 11:16am UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/1 "2021-03-03T11:16:17Z")

</div>

Hallo,  
ich habe ein par Crons die für die Artikelaufnahme meiner Lieferanten zuständig sind, diese bestehen üblicherweise aus txt oder csv Dateien. Das Problem, die Dateien haben im Schnitt um die 50 -60.000 Zeilen, bedeutet, die Aufnahme in einer DB erfolgt nicht vollständig, da die Scriptlaufzeit erreicht wurde, bei viel Glück, je nach Angaben pro Zeile, schaffe ich 15-20.000 Zeilen.  
set\_time\_limit(0); oder ignore\_user\_abort(true); helfen da leider auch nicht weiter, gibt es dafür alternative Lösungen um alle Zeilen einlesen zu können?

Grüße aus Berlin

---

<div class="post-metadata">

**Author:** ![indianer3c](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/indianer3c/32/4325_2.png) [@indianer3c](https://forum.oxid-esales.com/u/indianer3c)\
**Post date:** [March 3, 2021, 11:41am UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/2 "2021-03-03T11:41:03Z")

</div>

> [@itnic](#):
>
> helfen da leider auch nicht weiter, gibt es dafür alternative Lösungen um alle Zeilen einlesen zu können?

Du könntest die Dateien vorab splitten. Wenn Du weißt, dass ca. nur 15.000 Zeilen importiert werden. Könntest vorab dafür sorgen, dass die Importdateien aufgesplittet z.B. in 10.000 Zeilen und der Cron mehrmals läuft bis alle aufgesplitteten Dateien eingeladen sind.

---

<div class="post-metadata">

**Author:** ![rubbercut](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/rubbercut/32/3520_2.png) [@rubbercut](https://forum.oxid-esales.com/u/rubbercut)\
**Post date:** [March 3, 2021, 12:37pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/3 "2021-03-03T12:37:03Z")

</div>

Bei so großen Dateien kannst den Import per Zeile aufteilen, also mit Offset arbeiten oder zunächst versuchen, neben dem set\_time\_limit (im Loop!!!) auch das memory\_limit zu erhöhen (1024),

---

<div class="post-metadata">

**Author:** ![itnic](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/i/ec9cab/32.png) [@itnic](https://forum.oxid-esales.com/u/itnic)\
**Post date:** [March 3, 2021, 5:34pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/4 "2021-03-03T17:34:12Z")

</div>

@indianer3c, das mit dem splitten funktioniert aus diversen Gründen nicht, daher leider nicht hilfreich, trotzdem danke!

@rubbercut, was meinst du mit “Offset arbeiten”, memory\_limit habe ich nur 512, mehr geht nicht und den set\_time\_limit in der Schleife soll was bringen? Steht bei mir am Anfang vom Script.

---

<div class="post-metadata">

**Author:** ![rubbercut](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/rubbercut/32/3520_2.png) [@rubbercut](https://forum.oxid-esales.com/u/rubbercut)\
**Post date:** [March 3, 2021, 5:48pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/5 "2021-03-03T17:48:43Z")

</div>

> [@rubbercut](#):
>
> set\_time\_limit

Gehört in den Loop, damit die Zeit bei jedem Durchgang neu gestartet wird.

---

<div class="post-metadata">

**Author:** ![rubbercut](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/rubbercut/32/3520_2.png) [@rubbercut](https://forum.oxid-esales.com/u/rubbercut)\
**Post date:** [March 3, 2021, 5:51pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/6 "2021-03-03T17:51:40Z")

</div>

> [@itnic](#):
>
> was meinst du mit “Offset arbeiten”

Einen Counter einrichten und mit Offset jeweils einen Teil der Rows bearbeiten, also immer von X bis Y.

---

<div class="post-metadata">

**Author:** ![itnic](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/i/ec9cab/32.png) [@itnic](https://forum.oxid-esales.com/u/itnic)\
**Post date:** [March 3, 2021, 6:02pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/7 "2021-03-03T18:02:37Z")

</div>

Was bringt mir der Counter, wenn die csv innerhalb der Schleife abgearbeitet wird.

Ergo sowas wie  
while($data = fgetcsv($handle, 6500, “\t”))  
{  
Zeile bis ca. 60.000 durchlaufen  
}

---

<div class="post-metadata">

**Author:** ![rubbercut](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/rubbercut/32/3520_2.png) [@rubbercut](https://forum.oxid-esales.com/u/rubbercut)\
**Post date:** [March 3, 2021, 6:06pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/8 "2021-03-03T18:06:41Z")

</div>

$data wird bei jedem Durchlauf verkleinert, sodass immer nur die Offset-Zeilen von X bis Y übrig bleiben. Es dauert ein wenig länger, läuft aber durch, wenn das andere (set\_time\_limit) nicht klappt.

---

<div class="post-metadata">

**Author:** ![itnic](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/i/ec9cab/32.png) [@itnic](https://forum.oxid-esales.com/u/itnic)\
**Post date:** [March 3, 2021, 6:19pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/9 "2021-03-03T18:19:44Z")

</div>

Coole Idee!!! Jetzt weiß ich wie du das meinst, danke dafür.  
Kann man auch rausbekommen wieviel Zeilen eine csv hat, so dass ich das besser aufteilen kann, da die sich von Lieferant zu Lieferant und täglich in der Größe unterscheiden.

---

<div class="post-metadata">

**Author:** ![patchwork.de](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/patchwork.de/32/324_2.png) [@patchwork.de](https://forum.oxid-esales.com/u/patchwork.de)\
**Post date:** [March 3, 2021, 6:23pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/10 "2021-03-03T18:23:37Z")

</div>

ich würde nicht über die Anzahl Zeilen gehen, sondern über Script-Laufzeit.  
 → am Anfang des Scipts die Uhrzeir speichern → nach zB 5 Sek-\> neustart

---

<div class="post-metadata">

**Author:** ![itnic](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/i/ec9cab/32.png) [@itnic](https://forum.oxid-esales.com/u/itnic)\
**Post date:** [March 3, 2021, 6:33pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/11 "2021-03-03T18:33:46Z")

</div>

set\_time\_limit in der Schleife bringt leider gar nichts, einzig das Script scheint “warum auch immer” schneller durch zulaufen.

Nachtrag: Script läuft bis ca. 12.000 Datensätze, bringt dann seltsamer Weise aber ein Ok zurück, ist außerhalb der Schleife. Kann der Hoster das irgendwie beinflussen?

@patchwork.de , die Scriptlaufzeit am Anfang ist nicht der optimale Weg, da die Artikel aus der csv in einer tmp Table gespeichert werden, alle alten Artikel werden am Scriptanfang komplett gelöscht. Ich will nicht, dass sich die DB bis ins endlose aufbläht.

---

<div class="post-metadata">

**Author:** ![patchwork.de](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/patchwork.de/32/324_2.png) [@patchwork.de](https://forum.oxid-esales.com/u/patchwork.de)\
**Post date:** [March 4, 2021, 9:30am UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/12 "2021-03-04T09:30:17Z")

</div>

> [@itnic](#):
>
> @patchwork.de , die Scriptlaufzeit am Anfang ist nicht der optimale Weg, da die Artikel aus der csv in einer tmp Table gespeichert werden, alle alten Artikel werden am Scriptanfang komplett gelöscht. Ich will nicht, dass sich die DB bis ins endlose aufbläht.

ich habe es wohl schlecht formuliert, deshalb etwas ausführlicher:  
 → am Anfang des Scriptes die Uhrzeit speichern  
 → einen Zähler mitlaufen lassen (txt-Zeilen bzw. DB-Tabellen-Zeilen)  
 → innerhalb der while-Schleife zeitgesteuert entscheiden ob der Prozess neu gestartet werden muss (zB nach 5 Sekunden)  
 → wenn Neustart dann den Zähler als Parameter übergeben und die txt-Datei mit diesem Offset weiter bearbeiten

---

<div class="post-metadata">

**Author:** ![rubbercut](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/rubbercut/32/3520_2.png) [@rubbercut](https://forum.oxid-esales.com/u/rubbercut)\
**Post date:** [March 4, 2021, 12:06pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/13 "2021-03-04T12:06:55Z")

</div>

> [@itnic](#):
>
> Kann man auch rausbekommen wieviel Zeilen eine csv hat

```
$x = file("datei.csv");
$xcount = count($x);

```

---

<div class="post-metadata">

**Author:** ![itnic](https://forum.oxid-esales.com/letter_avatar_proxy/v4/letter/i/ec9cab/32.png) [@itnic](https://forum.oxid-esales.com/u/itnic)\
**Post date:** [March 4, 2021, 1:10pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/14 "2021-03-04T13:10:47Z")

</div>

@patchwork.de, danke  
@rubbercut, ebenfalls danke, hatte ich schon gefunden, muss jetzt mal bissl testen ob eure Ideen funktionieren, habe soeben erfahren, das größte Problem liegt derzeit beim Hoster, der meldet ein Performanceproblem, welches sich mehrere Wochen ☹ hinziehen kann

---

<div class="post-metadata">

**Author:** ![system](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/system/32/4245_2.png) [@system](https://forum.oxid-esales.com/u/system)\
**Post date:** [March 4, 2022, 1:11pm UTC](https://forum.oxid-esales.com/t/skriptlaufzeit-verlangern/97652/15 "2022-03-04T13:11:36Z")

</div>

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
