menatwork / syncCto

Contao Extension :: Synchronize multiple contao installations with each other
https://packagist.org/packages/menatwork/synccto
25 stars 14 forks source link

Version for Contao >= 4.4.x - Current state #284

Open stefanheimes opened 5 years ago

stefanheimes commented 5 years ago

We have updated SyncCto and CtoCommunication to work with the new Contao 4.4.x and above. Sorry to all, that the update took so long.

Hint: If you want to try the new version, you have to add the full path of the website with the entry point of syncCto. Add the /ctoCommunication to the serverpath. See image:

image

Known Issues:

Missing Features:

Removed features:

MalteGross commented 5 years ago

Ich habe leider Probleme Synccto zum Laufen zu kriegen. Ich habe die Konfiguration genauso vorgenommen, wie du es beschrieben hast. Mit der Einstellung "/ctoCommunication" im Serverpfad bekomme ich die Statusmeldung: Die Extensions ctoCommunication/syncCto sind nicht installiert. Ich hab mal ins Log vom Client geschaut. Diese Fehlermeldung ist enthalten:

[2019-10-04 13:03:54] request.INFO: Matched route "ctocommunication_start". {"route":"ctocommunication_start","route_parameters":{"_route":"ctocommunication_start","_controller":"MenAtWork\CtoCommunicationBundle\Controller\Client:execute","_scope":"frontend","_token_check":false},"request_uri":"http://10.0.0.33:61150/ctoCommunication","method":"GET"} [] [2019-10-04 13:03:54] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] [2019-10-04 13:03:54] request.CRITICAL: Uncaught PHP Exception InvalidArgumentException: "Controller "MenAtWork\CtoCommunicationBundle\Controller\Client" cannot be fetched from the container because it is private. Did you forget to tag the service with "controller.service_arguments"?" at /Users/server2019/Documents/helios/projects/mittelstandsschutz/dev/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php line 71 {"exception":"[object] (InvalidArgumentException(code: 0): Controller \"MenAtWork\CtoCommunicationBundle\Controller\Client\" cannot be fetched from the container because it is private. Did you forget to tag the service with \"controller.service_arguments\"? at /Users/server2019/Documents/helios/projects/mittelstandsschutz/dev/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php:71, ArgumentCountError(code: 0): Too few arguments to function MenAtWork\CtoCommunicationBundle\Controller\Client::__construct(), 0 passed in /Users/server2019/Documents/helios/projects/mittelstandsschutz/dev/vendor/symfony/http-kernel/Controller/ControllerResolver.php on line 133 and exactly 1 expected at /Users/server2019/Documents/helios/projects/mittelstandsschutz/dev/vendor/menatwork/ctocommunication/src/Controller/Client.php:36)"} []

Contao-Version: 4.7.7 PHP-Version: 7.3 menatwork/synccto (4.0.0-beta3) menatwork/ctocommunication (dev-feature/contao4 6897f03)

Hast du ne Idee, woran das liegen könnte, dass es bei mir nicht funktioniert?

stefanheimes commented 5 years ago

Moin @MalteGross

Ich habe für Contao 4.8 einige Anpassungen an der CtoCommunication gemacht. Diese Änderung sollte das Problem beheben. Könntest du einmal ein Update machen und es dann noch einmal erneut prüfen.

Danke.

MalteGross commented 5 years ago

Hallo @stefanheimes ich bin auf ein weiteres Problem gestoßen. Mit der Contao Version 4.5 wurde die Storage Engine von sämtliche Tabellen von MyIsam auf InnoDB umgestellt. Damit funktioniert das SchemaQuery in Synccto nicht mehr um zu überprüfen welche Tabellen zuletzt geändert wurden, weil diese Information von Storage Engine InnoDB nicht aktualisiert wird. Der Sync funktioniert dann genau einmal, danach werden keine Änderungen mehr erkannt werden.

Klasse: SyncCtoHelper Zeile: 1179 - 1181 $objDBSchema = \Database::getInstance()->prepare("SELECT TABLE_NAME, UPDATE_TIME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?")->execute($GLOBALS['TL_CONFIG']['dbDatabase']);

MalteGross commented 5 years ago

Kay, ich hab das Problem identifiziert... bei uns ist noch MySql 5.5.42 im Einsatz 🐙

mammut47 commented 5 years ago

Könnte hier dokumentiert werden, wie man synccto in die eigene managed-edition von contao einbaut?

mammut47 commented 5 years ago

Ich glaube, ich habe die Einstellungen mit dem contao-manager gefunden: Installation von menatwork/ctocommunication mit Versionseinstellung: "dev-feature/contao4" Danach Installation von "menatwork/synccto" mit Versionseinstellung: "4.0.0-beta3" Mit der Konfiguration konnte ich synccto mit dem contao-manger installieren.

mammut47 commented 4 years ago

Ich habe das Problem, dass bei einer contao 4.8.5 Installation und Einrichtung von Synccto folgende Fehlermeldung beim Systemcheck kommt: Could not find start or endtag from response.

In der Master-Installation wird "blau" gemeldet. Es soll beim Client kein synccto oder ctocommunication installiert sein.

Installiert ist ctocommunication: dev-feature/contao4 (Master und Client) synccto: 4.0.0-beta3 (Master und Client) Contao: 4.8.5 (Master und Client) DB-Server mariadb 10.0.38 (Master) Client-server: mysql 5.7 (Client) php: 7.3 (Master und Client)

Ansonsten leere Installation.

hat sich erledigt. Anscheinend muss in den Client-Einstellungen zusätzlich ein Serverpfad von "/ctoCommunication" verwendet werden. Nach Eintragung funktioniert das Synchronisieren einwandfrei. Dateien wie Content.

UlrichHolland commented 4 years ago

Hallo,

trotz Eintrag des Serverpfades nach obiger Anleitung, ist der Status der Clients zweier gleicher Installationen jeweils gegenseitig "blau", mit dem jeweiligen Hinweis: Details: The client with the adress: seems to be an older Version. Funktion: MenAtWork\CtoCommunicationBundle\Controller\Server | startConnection.

Konfiguration jeweils (installiert mit Contao-Manager 1.2.1): Contao 4.4.45 PHP 7.3 mysql 5.7 ctocommunication: dev-feature/contao4 synccto: 4.0.0-beta3

Besonderheit: Auf beiden Systemen ist Metamodels 2.1 installiert.

mammut47 commented 4 years ago

grafik Bei meiner Installation auf dem Master sieht die Konfiguration des Clients wie im Bild aus. Damit hat es bei mir einwandfrei funktioniert.

UlrichHolland commented 4 years ago

grafik Bei meiner Installation auf dem Master sieht die Konfiguration des Clients wie im Bild aus. Damit hat es bei mir einwandfrei funktioniert.

Danke, das ist in meiner Installation identisch, funktioniert aber leider nicht...

Ergänzung: ... nicht ganz identisch, die Verschlüsselung ist bei mir "phpseclib(AES)", sollte aber keine Rolle spielen.

UlrichHolland commented 4 years ago

Der Client darf nicht im Wartungsmodus sein! Bei weiteren Tests stelle ich fest, dass der Client nicht im Wartungsmodus sein darf. Nach Deaktivierung des Wartungsmodus' geht der Status des Clients auf "grün"...

...das ist vermutlich so "nicht im Sinne des Erfinders".

stefanheimes commented 4 years ago

Version 4.0.1 ist veröffentlicht.

MalteGross commented 4 years ago

Gibt es ein Changelog?

UlrichHolland commented 4 years ago

Auch nach Update auf Version 4.0.1 ist die Verbindung zum Client nur möglich, wenn dessen Wartungsmodus deaktiviert ist...

stefanheimes commented 4 years ago

Moin

@MalteGross ich habe zumindest von der 3.2.x auf die 4.0.x eine Changelog angelegt. Siehe hier: https://github.com/menatwork/syncCto/wiki/Changelog

@UlrichHolland Das Feature war/ist nicht direkt geplant. Ich habe geschaut, es müsste dafür wohl die Konfiguration diese Bundles angepasst werden, welches Contao benutzt um den Maintenance Mode zu realisieren: https://github.com/lexik/LexikMaintenanceBundle/blob/master/Resources/doc/index.md