2009-07-03 7 views
2

Ich benutze die CakePHP Console, um Dateien von uns herunterzuladen und in einer Datenbank zu verarbeiten. Ich führe die Konsole aus dem "app" -Verzeichnis. Aber wenn ich versuche, die Konsole außerhalb der App auszuführen und nur den Parameter "-app" für meinen Cron-Job zu setzen, funktioniert das nicht.CakePHP Console via Cron Frage

Um ehrlich zu sein, ich hatte keinen Erfolg mit -app Parameter. Es ist, als würde es überhaupt nicht funktionieren.

Übrigens verwende ich Windows & Pycron für meine Cron-Jobs.

Hier ist, was passiert, wenn ich versuche, die Konsole von D auszuführen: \ web \ elink \ app \ Anbieter \ Schalen: \

D:\>web\elink\cake\console\cake -app D:\web\elink\app 


Welcome to CakePHP v1.2.2.8120 Console 
--------------------------------------------------------------- 
Current Paths: 
-app: app 
-working: D: -app D:/web/elink/app 
-root: D: -app D:/web/elink 
-core: D:\web\elink 

Changing Paths: 
your working path should be the same as your application path 
to change your path use the '-app' param. 
Example: -app relative/path/to/myapp or -app /absolute/path/to/myapp 

Available Shells: 

D:\web\elink\vendors\shells: 
     - none 

CORE\console\libs: 
     acl 
     api 
     bake 
     console 
     i18n 
     schema 
     testsuite 

To run a command, type 'cake shell_name [args]' 
To get help on a specific command, type 'cake shell_name help' 

Meine Schalen bei D befinden.

+0

Ich kann nicht scheinen, dass der Parameter -app auf Ubuntu funktioniert. Ich werde versuchen, die Workaround unten von Hector. – the0ther

Antwort

1

Ich habe es geschafft, dieses Problem mit den Versionen 1.2.2.8120 und 1.2.3.8166 unter Windows zu reproduzieren. Der Parameter scheint nicht wie erwartet zu funktionieren.

Die Konsole listet nur globale Shells im Ordner /vendors/shells auf und nicht anwendungsspezifische, die sich in /app/vendors/shells oder in Plugins befinden (/app/plugins/plugin_name/vendors/shells).

Der Parameter -app funktioniert wie erwartet unter OpenSUSE und listet alle verfügbaren anwendungsspezifischen Shells (einschließlich der in Plugins) auf.

Wenn wir etwas nicht falsch machen, lohnt es sich wahrscheinlich, ein Ticket über Trac zu diesem Problem zu öffnen.

Eine Problemumgehung wäre, Ihr Cake console-Verzeichnis der Umgebungsvariablen Windows PATH hinzuzufügen.

  1. 'Systemeigenschaften' Open (Start Taste + Pause/Break key)
  2. Öffnen Sie den Tab 'Erweitert'
  3. Klicken Sie auf 'Umgebungsvariablen'
  4. die PATH-Variable Wählen Sie im Bereich 'Systemvariablen'
  5. Press 'Bearbeiten'
  6. anfügen ;E:\web\elink\cake\console\ auf den 'Wert der Variablen'
  7. Press: 'okay' auf allen Dialogen
  8. Schließen Sie alle geöffneten cmd fordert

Sie können dann pycron einrichten E:\web\elink\cake ohne -app Parameter laufen und alle anwendungsspezifischen Schalen sollten zur Verfügung stehen.

+0

Ich habe das getan, aber wenn ich Kuchen tue, tauchen die anwendungsspezifischen Hüllen immer noch nicht auf. Diesmal arbeitet der Parameter -app jedoch wie erwartet. Dank deizel. – codegy

1

-Für der Leute das gleiche Problem, aber auf Linux-Systemen, hier gibt es eine einfache Lösung:

http://book.cakephp.org/complete/3/The-Manual#Running-Shells-as-cronjobs-846

-Ein weitere alternative Lösung für jedes System wäre ein einfaches Skript mit zwei Zeilen zu erstellen wie folgt:

cd /path/to/app 
/path/to/cake 

-Beide Lösungen arbeiteten für mich in einem Cent0S und in einem MacOS basierten Maschinen.