Plugin Installation dauert

Moin,

ich habe für einen Kunden ein Plugin erstellt welches Datenbank Tabellen Spalten hinzufügt.
Aber die Installation dauert unfassbar lange und endet zeitweise in einem Timeout.

Woran kann das liegen?

Die Spalten werden in die s_orders_details_attributes eingetragen.
Evtl. weil die Tabelle ziemlich groß ist?

Danke im Voraus.

Moin,

mein Auto springt nicht an woran kanns liegen?

Gib uns doch ein paar Infos - am besten was für ein Server eingesetzt wird, wie viele Spalten erstellt werden, wie du das ganze eingebunden hast usw.
Ansonsten kann man nur im dunklen stochern was niemandem Spaß macht.

Grüße

Linux Server, 8 Spalten VARCHAR, Über ein Plugin, siehe Titel.
Bei der Plugin Installation werden die Spalten hinzugefügt über den crud_service von Shopware.

Kein Mensch weiß von welchem Plugin hier die Rede ist. Von daher:

SW Hilfe:

  • Devtools deines Browsers nutzen

  • Browser F12 (Entwicklerwerkzeuge) nach Fehlerausgaben schauen

  • Fehlermeldungen aktivieren und untersuchen
    Shopware 5 - Tutorials & FAQs - Fehlermeldungen in Shopware debuggen

  • Fehlermeldungen in error_log auf Server untersuchen (mögliche PHP-Fehler)
    Bitte nicht mit Shopware Log verwechseln. Liegt meist außerhalb vom httpdocs-Order der Domain - ggf. beim Hoster anfragen.

Wie wollt ihr das auch wissen?
Das ist ein selbst entwickeltes Plugin.
Ergo könnt ihr es auch nicht kennen.

Das Plugin fügt Spalten zu einer Tabelle hinzu.

Was wollt ihr noch über das Plugin wissen? Das ist doch völlig irrelevant.

Es gibt weder Fehler in der Entwicklerconsole des Browsers, noch im PHP error_log.
Wenn das der Fall wäre, würde ich die Frage doch nicht hier stellen.

Das ganze funktioniert ja. Es dauert halt sehr lange. So lange das der Installationsprozess in einem Timeout endet.

Ich Frage hier ob jemand so einen Fall mal hatte und mir evtl. erzählen kann, wie er das Problem gelöst hat. Erschreckend wie das Forum hier teilwiese reagiert. Wir sind hier alles Entwickler, zumindest die Meisten. Ein Austausch der gesammelten Erfahrungen wäre wünschenswert und keine überflüssigen und nichts sagenden Posts.

Entspann Dich. Um Dir helfen zu können brauchen wir mehr Infos. Timeout für 8 zusätzliche Attribute hört sich jedenfalls nicht normal an.

  • poste bitte mal den Code-Schnipsel deiner public function install
  • es gibt keinen Type varchar in SW, vgl. Attribute Data Types - meinst Du single_selection?
  • tritt das Problem auch in einem jungfräulichen Demo-Shop auf, oder nur mit einem Shop welcher bereits sehr viele Artikel im System hat?
  • hast Du schon mal ein Datenbank-Profiling gemacht? Was sagt der MySql Slow Query Log?

LG Phil

public function install(InstallContext $installContext)
{
/** @var CrudService $service */
$service = $this->container->get(‚shopware_attribute.crud_service‘);

    $service->update(
        's_order_details_attributes',
        'spalten_name',
        'single_selection'
    );
    $service->update(
        's_order_details_attributes',
        'spalten_name',
        'single_selection'
    );

    $service->update(
        's_order_details_attributes',
        'spalten_name',
        'single_selection'
    );
    $service->update(
        's_order_details_attributes',
        'spalten_name',
        'single_selection'
    );

    $service->update(
        's_order_details_attributes',
        'spalten_name',
        'single_selection'
    );
    $service->update(
        's_order_details_attributes',
        'spalten_name',
        'single_selection'
    );

    $service->update(
        's_order_details_attributes',
        'spalten_name',
        'single_selection'
    );
    $service->update(
        's_order_details_attributes',
        'spalten_name',
        'single_selection'
    );

    parent::install($installContext);
}

In der Funktion werden noch 36 andere Spalten in anderen Tabellen hinzugefügt.
Aber Ohne diese 8 in die s_order_details_attributes läuft es ohne Verzögerung durch.

Das der Datentype VARCHAR im Shopware Kontext single_selection heißt war mir bewusst.

In einem leeren Demo Shop läuft es auch so durch. Nur nicht in einem laufenden Shop mit vielen Artikeln.

Datenbank-Profiling habe ich noch nicht gemacht.

Danke. Sieht sehr nach Datenbank aus.

  • Wieviele Records hat die Tabelle s_order_details_attributes?
  • besteht die Möglichkeit die Spalten schon mal vorab über phpMyAdmin anzulegen?
  • welche DB und Version ist im Einsatz?

Das Problem hier dürfte MySQL sein. ALTER TABLE … ADD COLUMN mit vielen bestehenden Daten/Indizes kann sehr, sehr lange (Stunden oder sogar Tage) dauern. Vgl. sql - MySQL very slow for alter table query - Stack Overflow. Hintergründe und Analyse findest Du hier: Unexpected slow ALTER TABLE in MySQL 5.7 | Percona Community

Über den CRUD-Service sind das dann auch noch 8 eigenständige ALTER TABLE calls, es würde bedeutend schneller gehen (1/8 der Zeit) wenn man da nur ein einziges SQL-Statement verwenden würde, und - wie in obigem Artikel erklärt - es ggf. mal mit dem anderen ALGORITHM Parameter zu versuchen.

LG Phil

1 Like