Ich habe die folgenden doc-Einträge gelesen:
Sowie diese Frage:
Erstellen von Cron-Jobs in CakePHP 2.x
>Ich habe Probleme, zwei Cron-Job-Funktionen zu implementieren. Eine davon ist die gleiche wie die oben aufgeführte Frage zum Stack-Overflow, um eine Test-E-Mail zu senden. Der andere, um einfach eine neue Zeile in meine "Crons" -Tabelle einzufügen. Keine funktioniert und ich glaube, es ist die Art, in der ich versuche, die Cron-Jobs zu nennen. Ich glaube nicht, dass ich den richtigen Pfad verwende.
Konsole / Befehl / CronShell.php
%Vor%Ich habe eine CronsController.php mit dem obigen Code als Teil der Indexaktion eingerichtet. Der Code funktioniert einwandfrei, wenn über den Controller zugegriffen wird, so dass das Problem mit dem Shell- oder Cron-Job auftritt.
Ich habe die folgenden Befehle verwendet, um diese Methode als Cron-Job zu bezeichnen, aber keiner hat funktioniert ...
%Vor%Ähnlich habe ich die folgende Shell versucht, eine Test-E-Mail zu senden
Konsole / Befehl / EmailShell.php
%Vor%Wieder probiere ich die folgenden Befehle aus. Für jeden dieser Befehle habe ich auch versucht, den Methodennamen "main" gemäß den Anweisungen des Dokuments zu entfernen.
%Vor%2017 BEARBEITEN - NOCH NICHT FUNKTIONIEREN
Ich habe meinen Cron auf /home/allfan5/public_html/allfans/app/Console/cake.php -app /home/allfan5/public_html/allfans/app/ test action
Ich habe eine Shell namens TestShell und eine Funktion namens "action". Die Action-Funktion ist komplett leer, um Dinge zu testen (Ich habe auch eine Funktion versucht, bei der ich Benutzer per E-Mail schickte, aber ich bekam Fehler, also erstellte ich eine neue Shell und eine komplett leere Funktion und ich erhalte denselben Fehler).
Der Fehler, den ich jetzt erhalte, ist
%Vor%Ich habe keine Ahnung, was das verursachen könnte, da die Shell-Funktion komplett leer ist. Sogar die Aktion, als ich versuchte, Benutzer per E-Mail zu versenden, kopierte ich den Code und lief es von einem Controller und es funktionierte gut. Es stimmt also etwas nicht damit, wie Cake die Shell ausführt oder aufruft.
Ich betreibe Kuchen 2.5 auf PHP 5.4
Wir benutzen eine andere Art, crons zu betreiben:
im Webroot dir Ich habe eine Datei namens corn_dispatcher.php, die eine Kopie der Datei index.php ist, aber mit einigen Änderungen am Ende der Datei:
App :: verwendet ('Dispatcher', 'Routing');
definieren ('CRON_DISPATCHER', wahr);
$ Dispatcher = neuer Dispatcher ();
$ Dispatcher- & gt; Versand (neuer CakeRequest ($ argv [1]), neuer CakeResponse ());
Dann habe ich eine CronjobController.php Datei mit den Funktionen, die sich auf einzelne Crons beziehen. Außerdem wurde eine beforeFilter-Funktion mit $ this- & gt; Auth- & gt; allow (); (also Crons laufen, ohne wegen ACL-Einschränkungen zu brechen) sowie das Entfernen von Layouts und Autorendering
Als Nächstes legen Sie Routen zu den Crons fest.
Schließlich in meiner Crontabs-Datei:
1 6 * * * php -f /pfad-zu-webroot/cron_dispatcher.php / routeUrl
Auch einige Dinge zu beachten:
Ich hoffe, das hilft.
Diese Methode ist die "Vanille" -Methode, erfordert nicht, dass Sie irgendwelche PHP-Dateien bearbeiten oder hinzufügen, um Ihre Cron-Jobs zu versenden, es funktioniert mit CakePHP 2.x
So für CakePHP 2.x verwenden Sie das:
Einstellungen:
Sie haben eine Shell namens CustomShell.php, die sich unter /public_html/app/Console/Command/CustomShell.php
Innerhalb dieser CustomShell.php haben Sie mehrere Funktionen: functionThis()
und functionThat()
Wie ruft man diese Shell auf und wie ruft man jede Funktion an?
Sie gehen zu Ihrem cPanel (oder dem von Ihnen verwendeten Management) innerhalb des Cron Job Managers, und Sie geben Folgendes in den Befehl ein:
Die Syntax sieht folgendermaßen aus:
cd /home/your_user/public_html/app && Console/cake shell_name function_name
So sieht das cmd bei meinem Beispiel aus:
cd /home/your_user/public_html/app && Console/cake custom functionThis
Beachten Sie, dass der Funktionsname nicht CustomShell
, sondern custom
lautet. Beachten Sie auch, wie ich das functionThis()
aufrufen kann. Sie können dieses Feld leer lassen und es ruft automatisch Ihre main()
-Funktion in der CustomShell.php
-Datei auf.
Verwenden Sie den vollständigen Pfad für das Cake Shell-Skript (anstatt cd
zu verwenden) und übergeben Sie dann den vollständigen Pfad Ihres App-Verzeichnisses gemäß den Anweisungen in der Konsole:
Ihr Arbeitspfad sollte mit Ihrem Anwendungspfad identisch sein ändere deinen Pfad mit dem Parameter '-app'. Beispiel: -app relativ / pfad / zu / myapp oder -app / absolut / pfad / zu / myapp
So wird Ihre Cron-Registerkarte:
%Vor%Tags und Links cakephp cakephp-2.5 cron