1b.app
Link kopiert -

Bewerten Sie die Verfeinerung der Aktion

Nun wird der Mechanismus zur Auswahl aktualisierter Daten in der Aktion „Produkte aus CMS ExtraParts importieren“ durch eine Anfrage ausgeführt:
„SELECT * FROM `price` WHERE `post_date` >= '{$postDateFrom}' ORDER BY `price`.`id` ASC“
Dabei verwendet die Variable „{$postDateFrom}“ die Zeit, zu der die Aktion zuletzt ausgeführt wurde.
Das Problem besteht darin, dass, wenn plötzlich eine große Menge aktualisierter Daten in „Preis“ erscheint (z. B. 4,6 Millionen), die Aktion eine große Datenmenge (ca. 12 GB) erfordert, deren Verarbeitung Stunden dauert (ca. 5 Stunden). ), was zu Zeitüberschreitungen oder Fehlern bei exportierten Produkten oder anderen Fehlern beim Datenexport führt ...
Es ist notwendig, den Mechanismus zur Stichprobenerhebung aktualisierter Daten zu verbessern:
1. Berücksichtigen Sie eine begrenzte Datenmenge (z. B. 100.000 in den Einstellungen angegebene Zeilen) für den Start einer Aktion, verarbeiten Sie dieses Array und stoppen Sie die Aktion.
Verarbeiten Sie beim nächsten Start der Aktion die nächste Menge aktualisierter Daten usw.
2. Wenn zwei oder mehr Exportaktionen gleichzeitig (parallel) arbeiten, müssen die Daten zwischen ihnen verteilt werden, damit nicht jede der Aktionen dieselben Daten verarbeitet.
Die ursprüngliche Frage ist in der Version verfügbar: ua

Antworten:

Bitte klären Sie: Liegt das Problem darin, dass alles lange dauert, bis es funktioniert, oder belastet es den Server? Wenn es etwas ist, das schon lange läuft, können wir Daten in parallele Streams wie 30-40 strömen, wenn es etwas ist, das den Server belastet, dann ist das eine andere Frage.

Oleksandr Grigorowitsch schrieb:
Brüder in der Stirn sind umgeben (zum Beispiel wird es in den angepassten 100.000 Reihen angezeigt)

Nun, wenn Sie 100.000 erreichen, werden Sie den aktuellen Stand nie erreichen.
22.04.2024, 13:28
Originalkommentar zur Version verfügbar: ru

Vielleicht ist es auch möglich, das Verladen von Waren so zu beschleunigen, dass es bei einem solchen Volumen um das X-fache geht
22.04.2024, 13:29
Originalkommentar zur Version verfügbar: ru

Ja, das Problem ist, dass es sehr lange dauert, und je länger dieser Prozess dauert, desto höher ist die Wahrscheinlichkeit, dass der Export scheitert.
Da genügend Serverressourcen vorhanden sind, habe ich den Export in Teilen und in parallelen Aktionen vorgeschlagen
22.04.2024, 13:56
Originalkommentar zur Version verfügbar: ru


Oleksandr Hryhorovych schrieb:
desto höher ist die Wahrscheinlichkeit eines Exportausfalls

Welche Fehler beobachten Sie nun in solchen Situationen?
22.04.2024, 13:58
Originalkommentar zur Version verfügbar: ua


Pflegeabteilung
OneBox Production schrieb:

Alexander Grigorjewitsch schrieb:
desto höher ist die Wahrscheinlichkeit eines Exportausfalls

Ja, was für Versäumnisse sehen Sie derzeit in solchen Situationen?

Wenn der Export sehr lange dauert, werden meistens Marken für Produkte gelöscht oder neue ohne Marke erstellt (die Variable $brandid gibt einen leeren Wert zurück ...) – das führt zu großen Problemen.
22.04.2024, 14:11
Originalkommentar zur Version verfügbar: ru

Wenn dies das einzige Problem ist, wird es innerhalb einer Stunde Überarbeitung behoben.
22.04.2024, 14:26
Originalkommentar zur Version verfügbar: ru

Wenn es eine Lösung zur Beschleunigung des Exports gibt, die es Ihnen ermöglicht, eine solche Menge erfolgreich abzufüllen und gleichzeitig den Markenverlust zu beseitigen, dann stellen Sie eine Rechnung aus.
22.04.2024, 14:34
Originalkommentar zur Version verfügbar: ru

Mit dieser Lösung können Sie sich die gesamte Liste der Marken merken und im Cache nach ihnen suchen. Dies beschleunigt auch den Import ein wenig, aber ich glaube nicht, dass er global sein wird. Versuchen wir es, ich stelle eine Rechnung aus
22.04.2024, 15:30
Originalkommentar zur Version verfügbar: ru


Pflegeabteilung
OneBox Production schrieb:
Mit dieser Lösung können Sie sich die gesamte Markenliste merken und im Cache nach ihnen suchen. Dies beschleunigt auch den Import ein wenig, aber ich glaube nicht, dass er global sein wird. Versuchen wir es, ich stelle eine Rechnung aus

Die Entscheidung, eine Marke von Cash zu übernehmen, wird nicht ausreichen, habe ich überprüft.
Ich habe die Methode zum Einbinden einer Marke in die Klasse vollständig deaktiviert; die Aktualisierung beschleunigt, aber nicht ausreichend.
Ist es möglich, das Gießen in mehrere Threads zu implementieren?
22.04.2024, 16:08
Originalkommentar zur Version verfügbar: ru

Die Geschwindigkeit ist mir egal, wenn am Ende alles normal überflutet wird. Wenn wir in mehrere Threads strömen, können wir die externe Datenbank und unsere eigene stark belasten.
22.04.2024, 16:32
Originalkommentar zur Version verfügbar: ru

Wir können es auch anders machen, ich mache es so, dass Ihr Download von 4 Datensätzen zum Beispiel eine Stunde funktioniert, danach zahlen Sie entsprechend der aufgewendeten Zeit.
22.04.2024, 16:33
Originalkommentar zur Version verfügbar: ru


Pflegeabteilung
OneBox Production schrieb:
Wir können es auch anders machen, ich mache es so, dass Ihr Download von 4 Datensätzen beispielsweise eine Stunde dauert, danach zahlen Sie entsprechend der aufgewendeten Zeit.

Ich stimme zu, wir werden noch länger raten, Sie werden es im Laufe der Zeit herausfinden.
Machen Sie es, ich zahle nachträglich.
22.04.2024, 16:38
Originalkommentar zur Version verfügbar: ru


Pflegeabteilung
OneBox Production schrieb:
Wir können es auch anders machen, ich mache es so, dass Ihr Download von 4 Datensätzen zum Beispiel eine Stunde funktioniert, danach zahlen Sie entsprechend der aufgewendeten Zeit.

Guten Tag.
Gibt es Fortschritte bei der Aufgabe?
09.05.2024, 13:44
Originalkommentar zur Version verfügbar: ru

Guten Tag. Ich habe alle Ihre Änderungen rückgängig gemacht und sie als Einstellungen hinzugefügt + dort meine Optimierungen hinzugefügt und sie sofort aktiviert. Bei den ersten Tests wurde eine Liste mit 1k Produkten in etwa 6 Sekunden geladen, im Moment dauert es etwa 2-3 (unter Berücksichtigung des Imports von Kategorien, der zu Beginn der Aktion immer etwa eine Sekunde frisst).
Eine Liste mit 100.000 Einträgen wird in etwa 130–150 Sekunden geladen, d. h. Die angegebenen 4 Millionen Datensätze werden in etwa eineinhalb bis zwei Stunden eintreffen. Diese. Die Aktion begann um ein Vielfaches schneller zu funktionieren.
Im Moment sind 3 Stunden vergangen. Wenn Sie möchten, können wir fortfahren und 100.000 Datensätze in etwa einer Minute hochladen (d. h. sogar 2-mal schneller, ich denke, das ist möglich), aber es wird schwieriger, da ich fertig bin die grundlegenden Optimierungen, dann müssen Sie Anfragen analysieren und jede Sekunde wird etwas schwieriger.
23.05.2024, 16:36
Originalkommentar zur Version verfügbar: ru

Олександр Григорович
Support EP
Hinterlassen Sie eine Nachricht in diesem Thread und Sie sehen die Kontakte des Benutzers
Guten Tag. Während ich einen Bericht über die Ergebnisse der Änderung erstellte, schaltete sie sich mehrmals ein und aus. Aktion importieren und alles hat wirklich funktioniert, 3.112.663 Datensätze in 97 Minuten. - ein ausgezeichneter Indikator.
Danke Dmitry! Ich warte auf die Rechnung.
Es gibt aber auch Probleme:
- Während des Imports überschreiben einige Produkte aus irgendeinem Grund den nicht synchronisierbaren Wert von 0 auf 1. Hat dies Auswirkungen auf den weiteren Import in BOX oder den Export nach OpenCart?
- Die aktuelle Aktion zum Importieren von Herstellern schreibt ihre cat.id (ExtraParts) in das Feld shopbrand.code1c (BOX). Dies führt zu einem Exportkonflikt nach opencart, beschrieben in https://1b.app/ru/forum/integrations-with -online -stores/18246-konflikt-u-roboti-dvoh-dodatkiv/ - ist das notwendig?
oder wie kann der Konflikt sonst gelöst werden?
25.05.2024, 17:56
Originalkommentar zur Version verfügbar: ru


Oleksandr Grigorowitsch schrieb:
- Beim Importieren überschreiben einige Produkte die nicht synchronisierbaren Werte von 0 auf 1. - Hat dies Auswirkungen auf den weiteren Import aus BOX oder den Export nach OpenCart?

1. Dies kann passieren, wenn während des Aktualisierungsvorgangs ein Fehler aufgetreten ist. Versuchen Sie, die Ware mit den Händen zu retten. Ist damit alles in Ordnung?
2. Sie verwechseln etwas, es ist wahrscheinlich die Aktion, die Marken importiert (separat). Sie können es ausschalten, wenn Sie es nicht benötigen.
27.05.2024, 10:52
Originalkommentar zur Version verfügbar: ru

Bitte beteiligen Sie sich am Dialog. Wenn Sie etwas zu sagen haben - schreiben Sie bitte einen Kommentar. Für die Teilnahme benötigen Sie ein Mobiltelefon und einen SMS-Code zur Identifizierung. Melden Sie sich an und schreiben Sie einen Kommentar