Heroku-Scheduler führt eine PHP-Datei aus

9

Ich versuche ein PHP-Skript mit dem Heroku-Scheduler auszuführen. Welchen Befehl sollte ich nach dem $ in heroku eingeben? Ich bekomme immer Datei nicht gefunden. Ich habe die Datei übertragen, die ich ausführen möchte, aber nicht Glück mit dem Scheduler zu laufen.

    
Luke Zammit 26.11.2012, 10:39
quelle

2 Antworten

7

Das Standard-PHP-Buildpack auf Heroku hat derzeit keine PHP-CLI-Unterstützung , die Sie nur verwenden können Es dient Web-Anfragen über Apache und nicht für Skripte in Worker-Dynos. Dies ist jedoch möglich, wenn Sie ein PHP-Buildpack verwenden, das über CLI-Unterstützung verfügt.

Um es auszuprobieren, habe ich das PHP-Buildpack ausgehackt und die PHP-Binärdatei mit einer anderen Version ersetzt wurde mit CLI-Unterstützung kompiliert und stellte eine kleine Demo zum Ausführen eines geplanten PHP-Jobs auf Heroku zusammen . In der Liesmich Schritt-für-Schritt-Anleitung finden Sie weitere Informationen. Um diese Verzweigung in einer vorhandenen App zu verwenden, setzen Sie das Buildpack mit:

%Vor%

Beachten Sie das release Skript in meinem fork richtet die PATH ein, um die php ausführbare Datei in /app/bin/php mit nur php aufzulösen, im Gegensatz zum Standard-Buildpack, für das der absolute Pfad benötigt wird.

    
ryanbrainard 04.02.2013, 02:31
quelle
0

So führen Sie ein PHP-Skript mit Heroku Scheduler aus?

Testen und Einrichten des Jobs

Mit einer Verzeichnisstruktur und Procfile , die ungefähr so ​​aussehen:

%Vor%

Procfile :

%Vor%

Dann können Sie Ihren Worker über die Befehlszeile wie folgt testen:

%Vor%

Um einen Job zu planen, gehen Sie zu Heroku Scheduler und fügen den Job auf ähnliche Weise hinzu, aber ohne das heroku run -Segment (sonst erhalten Sie bash: heroku: command not found errors), nur:

%Vor%

Oder alternativ direkt:

%Vor%

Überprüfung des Jobs

Sie können den Job in den Logs der App sehen. z.B.:

%Vor%

Notizen

  • Der worker Name in Procfile könnte auf etwas anderes gesetzt werden. z. B .: myworker , mysuperduperscript , usw.
  • Ich habe einen Abschnitt web eingefügt, aber er ist optional, wenn Sie nur einen Arbeiter- / Hintergrunddienst benötigen und keine Dateien im Web bereitstellen müssen.

Alternativ: Wenn Sie aus irgendeinem Grund eine GET / POST-Anfrage für eine URL ausführen möchten, können Sie das Temporize Scheduler Add-on verwenden.

    
Fabien Snauwaert 01.09.2017 15:26
quelle

Tags und Links