Zeitgesteuert Websites starten

  • Hallo Zusammen,


    Folgender Stand. Meine Komponente läd Dateiein im Backend und schreibt diese in die DB. Das erfolgt aber über den Benutzer. Jetzt soll das aber automatisch Zeitgesteuert gehen.


    Hat jemand schon einmal eine Möglichkeit gefunden oder entwickelt ?


    Es muss davon ausgegangen werden, dass kein Cronjob installiert ist.


    CLI war ein Ansatz, aber die Ansteuerung soll über meinen Rechner angestoßen werden.


    Es wäre auch möglich, dass als Auftrags-Projekt zu realisieren.


    Danke für Eure Hilfe.

  • Danke für Deine Antwort.


    Ich brauche einmal einen Denkanstoß.


    Die PHP-Datei liegt im Adminbereich. Wie kann ich diese Datei aufrufe?

    Mein Ansatz wäre der, dass ich über den Aufruf im Frontend gehen muss, und die Datei im Frontend stellt die Verbindung zum Backend bereit. Ist dieser Grundansatz ersteinmal richtig?


    Wenn ich diese Datei im Frontend über den Browser aufrufe, findet die Datei die JFactory Klasse nicht.


    Danke für die Unterstützung.

  • Ist die Datei nicht im Joomla-Framework eingebunden, kannst Du diese natürlich direkt aufrufen, wenn Du den Pfad kennst.

    Das birgt natürlich Sicherheitsprobleme wenn kein geheimer Token mitgeschickt wird,


    Ist es im Framework integriert kann sie nur über eine Backendanmeldung aufgerufen werden.

    Frontent-Login und BE-Login sind voneinander getrennt.

  • Als ANSATZ(!) Zum Abspicken, sozusagen. Schau dir z.B. das System-Plugin "easyjoomlabackupcronjob" an, das bei EJB beiliegt, mitinstalliert wird.


    Du verwendest also einen Secret-Key, ein Geheimwort, Passwort....


    Der Cronjob ruft (theoretisch) beliebige Seite auf, Hauptsache das Plugin wird abgefeuert, mit einer URL, die u.a. den SecretKey/Token mitbringt.


    Das Plugin startet, wenn Voraussetzungen geprüft und alles korrekt, deine Wunschaktionen.

  • Morgen,


    unser erster Ansatz mit dem CLI Skript denke ich war schon die richtige Richtung. Antwort siehe ursprünglicher Post.


    Ansteuerung über DEINEN Rechner könnte je nach Betriebssystem z.B. Windows eine Windows Aufgabe sein.

  • Hallo,


    wenn ich das richtig verstehe schreibst Du eine eigene Komponente, richtig?


    Dann kannst Du doch auch einen Controller im Frontend mit einer Methode erweitern, die den Import übernimmt. Die Methode rufst Du mit einer URL ähnlich dieser auf:

    http://localhost/index.php?opt…ontrollerName.doSomething


    Der Parameter "task" bestimmt wie üblich den Controller und die Methode. Sollte klar sein. Damit nicht jeder den Task aufrufen kann, ist ein Token ähnlich dem Easy Joomla Backup eine gute Option. Dann aber halt nicht einfach per GET und an die URL anhängen, kann ja dann wieder jemand mitlesen, wenn er will. Dann lieber über z.B. curl, POST und HTTPS. Aber wie kritisch Deine Anwendung hier ist, kann ich aus der Ferne nicht sagen.


    bembelimen: die Möglichkeit über com_ajax cronjobs zu simulieren verstehe ich auch nicht ganz. Kannst Du da mehr dazu sagen, denn das Problem hier hör ich so oft, wenn das verwendete Hosting keine echten conjobs bietet. Vielleicht schlummert bei Dir ja die perfekte Lösung? Danke!

    JoomISP - Joomla! Komponente zum Anbieten von Internet-Dienstleistungen wie Webhosting, Serververmietung oder VoIP.

  • Genau das haben wir alle mit verschiedenen Möglichkeiten vorgeschlagen.


    Wenn Du einen bestehenden View nimmst, kannst Du darin den Import der Daten aufrufen. Das würde dann immer passieren, wenn die Seite aufgerufen wird. Egal ob über cronjob oder einen Nutzer Deiner Seite.

    Um das zu verhindern kannst Du mit dem bereits erwähnten Token arbeiten. Ist das Token vorhanden, wird der Import ausgeführt. Das Token sollten normale Nutzer nicht kennen und es wird nur zusammen mit dem cronjob benutzt. Damit kannst Du dann steuern, wie oft der Task ausgeführt wird.


    Du kannst aber auch einen neuen View erstellen und dort nur den Import aufrufen.


    Das wird für Dich wahrscheinlich gut genug funktionieren, aber ein View sollte halt nur das machen, was zum Anzeigen einer Seite gemacht werden muss. Es schadet nicht, sich ein bisschen mit der Architektur von Joomla auseinanderzusetzen und Designprinzipien wie MVC einzuhalten. Auch wenn es anfänglich nicht notwendig erscheint. Wenn z.B. jede Datei DB-Zugriffe macht, wenn sie Daten braucht, weiß ich irgendwann nicht mehr, wo was passiert. Viel Spaß beim Pflegen der Software.


    Deshalb meine Lösung, diesen Import im Controller anzustoßen. Ein Controller sollte die Aktionen ausführen, die zu erledigen sind. Eine Seite/ein View anzeigen ist auch nur eine Aktion. Nach dem Import kann man immer noch ein redirect auf eine bestimmte Seite machen, wenn man möchte.


    Der Vorschlag mit dem Plugin (so wie Easy Joomla Backup) macht im Prinzip nix anderes als auf das Token zu warten und dann den Import auszuführen. Ist zugegeben auch eine elegante Lösung, wenn auch etwas komplizierter.


    Wenn Du noch Problem hast, einen Controller um eine Methode zu erweitern oder MVC noch nicht gehört hast:

    https://docs.joomla.org/Absolu…_a_Component_Functions/de

    https://docs.joomla.org/J3.x:D…JAX#site.2Fcontroller.php (es geht um das Prinzip, was die Methode hier macht ist egal!)

    JoomISP - Joomla! Komponente zum Anbieten von Internet-Dienstleistungen wie Webhosting, Serververmietung oder VoIP.

  • Vielen Dank für deine ausführliche Antwort. Meine Komponente folgt der MVC Struktur. Das war zum Anfang etwas schwierig, aber dann macht das richtigen Spass und es vereinfacht auch die Übersichtlichkeit.


    War es aber nicht so, dass ein Schreiben in die DB nur im Backend möglich ist.


    Aber man kann sich ja die entsprechende Zugriffe auf die Module einbinden oder?


    Jedenfalls ein großes Lob an Euch für die Hilfe, auch für Anfänger mit vielen Fragen.


    Danke