Gonzo: Funktion zeitgesteuert ausführen

Beitrag lesen

Ich wusste zum einen nicht, dass man bei Cronjobs Funktionen in einer Datei angeben kann.

Also können die Cronjobs auch auf eine Datenbank zugreifen???

Da hast du wohl etwas grundsätzlich missverstanden. crond ist ein Programm, dass nichts anderes macht, als andere Programme zum gewünschten Zeitpunkt zu starten (das wäre dann ein Cronjob, ein Programmstart-Termin).

Ein PHP-Skript ist aber per se erstmal kein Programm, das Skript benötigt selbst ein Programm (den Interpreter), um ausgeführt werden zu können. Im Falle von PHP ist es zu allem Überfluss häufig dann auch noch so, dass der Interpreter selbst kein eigenständiges Programm, sondern teil des Webserverprogrammes ist. Um ein PHP-Skript auszuführen, muss man also mit Hilfe eines Browsers (oder sonstigen HTTP-Klienten, zB wget) den Webserver anweisen, über den eingebauten Interpreter das Skript zu laden.
Nur manchmal ist gibt es auch die Möglichkeit, dass der PHP-Interpreter ein eigenständiges Programm darstellt, sowas läuft meist im Dunstkreis des Schlagwortes CGI. Ob dies bei dir gegeben ist, kann dir nur dein Hoster sagen.

Kurzum: Was cron für dich tu kann, ist, zu einem Zeitpunkt mehr oder weniger indirekt dafür zu sorgen, dass ein PHP-Skript ausgeführt wird. Etwas anderes kann cron nicht.

Außerdem kommen die Zeitintervalle in denen die Funktion ausgeführt werden soll aus einer Datenbank und können individuell verändert werden.

Hast du schon dafür gesorgt, dass die Zeiten aus der Datenbank auch an cron übermittelt werden?

Ich bin jetzt grad etwas verwirrt und hoffe immer noch über eine PHP-Lösung.

Die PHP-Lösung, auf die ich hinaus wollte, war, die betreffende Funktion in eine Datei auszulagern, dann ein zweites PHP-Skript zu erzeugen, welches erstere Datei mit der Funktion importiert und die Funktion aufruft, und zu guter Letzt diese zweite Datei per cron zu starten. Etwa so:

* import.inc.php:

function bla() {
  echo "fasel";
}

* cron.php:

require_once("import.inc.php");
bla();

* Cronjob, falls PHP nicht eigenständig zur Verfügung steht:

wget http://example.com/cron.php

* Cronjob, falls PHP eigenständig zur Verfügung steht:

php cron.php