Ergebnis 1 bis 12 von 12

Thema: Interne DB Backup Funktion über Cron Scheduler Bundle

  1. #1
    Contao-Nutzer Avatar von quenn
    Registriert seit
    28.03.2013.
    Ort
    Köln
    Beiträge
    144

    Standard Interne DB Backup Funktion über Cron Scheduler Bundle

    Hi,

    bisher habe ich für Kunden mit Hosting ohne Möglichkeit zu Cron Jobs immer mit der Kombination aus do-while/contao-backupdb-bundle und bugbuster/contao-cron-bundle gearbeitet, um automatisch DB Backups zu erstellen.

    Wie kann ich jetzt ab Contao 4.13 die neue interne DB Backup Möglichkeit in bugbuster/contao-cron-bundle nutzen?

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Ich denke hier müsste in bugbuster/contao-cron-bundle die Möglichkeit eingegbaut werden beliebige Commands ausführen lassen zu können.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer Avatar von quenn
    Registriert seit
    28.03.2013.
    Ort
    Köln
    Beiträge
    144

    Standard

    Bedeutet das, dass es im Moment nicht geht?

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Der Cron Scheduler kann eine PHP Datei aufrufen. Aus dem Handbuch:
    mein/job/in/meinem/relativem/pfad/job.php
    Erkannt als Datei Job, wird relativ zum Installationsverzeichnis per “include” geladen
    Ob und wie es in so einem Fall möglich ist, ein Comand aufzurufen, weiß ich nicht, habe ich mich noch nicht mit beschäftigt.
    Wenn das einfach möglich ist, könnte ich eventuell zukünftig eine weitere Art von Jobs unterstützen, ohne über den Datei Umweg gehen zu müssen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    contao-console includen wird nichts bringen - es muss ein Subprozess gestartet werden, der contao-console contao:backup:create --no-interaction --quiet aufruft - bzw. eben beliebige Commands mit beliebigen Parametern.
    » sponsor me via GitHub or PayPal or Revolut

  6. #6
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    GPT meint dazu "Controller soll Command aufrufen":

    Code:
    namespace App\Controller;
    
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\Console\Input\ArrayInput;
    use Symfony\Component\Console\Output\BufferedOutput;
    use Symfony\Component\HttpKernel\KernelInterface;
    use Symfony\Component\Routing\Annotation\Route;
    
    class MyController extends AbstractController
    {
        /**
         * @Route("/myroute", name="myroute")
         */
        public function index(KernelInterface $kernel)
        {
            // Erstellen Sie das Input-Objekt mit den Argumenten, die Sie übergeben möchten
            $input = new ArrayInput([
                'command' => 'cache:clear',
                // Passen Sie die Argumente an Ihre Bedürfnisse an
                '--env' => 'prod',
                '--no-debug' => true,
            ]);
    
            // Sie können den BufferedOutput verwenden, um die Ausgabe des Befehls zu erhalten
            $output = new BufferedOutput();
    
            // Holen Sie den Anwendungsdienst und führen Sie den Befehl aus
            $application = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel);
            $application->run($input, $output);
    
            // Die Ausgabe des Befehls zurückgeben
            $content = $output->fetch();
    
            // ...
        }
    }
    Wäre das so OK?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Ich würde das lieber als echten, asynchronen Subprozess starten (ist halt nicht ganz trivial).
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Hmm, dann eher so?
    Code:
    namespace App\Controller;
    
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Process\Process;
    use Symfony\Component\Routing\Annotation\Route;
    
    class MyController extends AbstractController
    {
        /**
         * @Route("/myroute", name="myroute")
         */
        public function index()
        {
            // Erstellen Sie ein neues Process-Objekt
            $process = new Process(['php', 'bin/console', 'your:command', 'arg1', 'arg2']);
            // Setzen Sie die Umgebungsvariablen FALLS notwendig
            $process->setEnv(['APP_ENV' => 'prod']);
    
            // Starten Sie den Prozess und übergeben Sie eine Callback-Funktion, um das Ergebnis zu behandeln
            $process->start();
    
            // Der Rest Ihres Codes wird hier fortgesetzt, während der Prozess im Hintergrund ausgeführt wird
    
            return new Response('Process started');
        }
    }
    Hat man eine Change an den Output zu kommen oder wenigstens ein Hinweis oder der Prozess erfolgreich war?
    Ups da steht es ja, callback Funktion.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    Hmm, dann eher so?
    Den Symfony\Component\Process\PhpExecutableFinder wirst du noch brauchen um das richtige PHP CLI zu finden.


    Zitat Zitat von BugBuster Beitrag anzeigen
    Hat man eine Change an den Output zu kommen oder wenigstens ein Hinweis oder der Prozess erfolgreich war?
    Wenn du das über einen Web Prozess starten lässt kann es halt sein, dass du in die max_execution_time läufst.
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Und dann noch vielleicht PhpSubprocess statt Process.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Ab Symfony 6, ja.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Aja, sehe ich auch grad. Das würde bedeuten nur ab Contao 5. Contao 4.13 hat ja ein
    Code:
    "symfony/process": "^5.4",
    in seiner composer.json.

    Müsste ich mal schauen wann ich Zeit habe und ob ich es für beide Contao Versionen anbiete.

    Hab ma alles notiert.
    https://github.com/BugBuster1701/con...ndle/issues/51
    Geändert von BugBuster (23.04.2024 um 15:26 Uhr)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •