2016-11-29 4 views
0

Ich habe ein Skript, das große Daten von einer anderen Website mit Hilfe von Curl holt.Magento 2 - 500 interner Server Fehler

Aber nach einiger Zeit bekomme ich 500 interne Serverfehler. Es ist nichts falsch im Skript, aber die großen Daten werden nicht auf einmal abgerufen.

Ich habe Konsole erstellt Befehl wie auch unter

php bin/magento Jet: sync_categories

und erstellt alle notwendigen Dateien für sie.

Aber aus Sicht des Benutzers ist es nicht machbar.

Was könnte eine Alternative dafür sein?

Antwort

0

Für eine bessere Lösung müssen Sie shell_exec verwenden ('php your-shell-file &'); Verwenden Sie "&" als letzten Parameter für die Verarbeitung Ihres Skripts im Hintergrund.

0

Für einen 500 internen Serverfehler; es ist normalerweise ein serverseitiger Fehler. Wenn Sie lokal arbeiten, gehen Sie zu Ihrer Apache php.ini und ändern Sie max_execution_time = 30 in einen größten Zeitrahmen, sagen wir max_execution_time = 300 (Sekunden). Wenn du zu einem Außenseiter gehst, braucht es Zeit, besonders wenn du große Daten sendest.

Wenn das Problem weiterhin besteht, dann andere wichtige Werte wie

memory_limit=2G 
    max_execution_time=300 
    post_max_size=8M 

ändern Hoffen, dass es funktioniert.

+0

Vielen Dank. Ich erstelle eine Erweiterung, daher ist es unmöglich, jeden Benutzer darüber zu informieren, diese Serverkonfiguration einzurichten. Gibt es eine Lösung, die in der Codierung selbst verwaltet werden kann – Nitz

+0

Ich denke, ich verstehe, was Sie tun. Säubern Sie Ihren Code ein wenig, wenn Sie in eine Datenbank gehen. Ein großes Problem, das ich normalerweise in Magento sehe, ist, dass ein Programmierer eine Schleife erstellt, um in eine Datenbank für jede SKU zu gelangen. Stellen Sie sich alle Ressourcen vor, die der Prozess benötigt, wenn Sie 500 SKUs haben. Beispielsweise. Wenn Sie eine SELECT in der Datenbank ausführen müssen, anstatt eine Schleife wie foreach ($ skus als $ sku) auszuführen: SELECT * FROM Tabelle WHERE sku = "$ sku" endforeach. -----> Erstellen Sie die Abfrage mit der IN-Klausel. Wie ---> SELECT * FROM Tabelle WHERE sku IN $ skus. Diese Änderungen sind sehr wichtig. –

+0

Wenn Sie keinen Zugriff auf die Datenbank haben, weil Sie eine API verwenden. Setzen Sie die timeout -Eigenschaft auf weniger als 30 Sekunden, da dies normalerweise das Timeout für einen normalen Server ist. –