Ich weiß, dass WordPress ein Faux-Cron hat, das so heißt, wenn ein Benutzer die Seite besucht.
register_activation_hook(__FILE__, 'my_activation');
add_action('my_hourly_event', 'do_this_hourly');
function my_activation() {
wp_schedule_event(time(), 'hourly', 'my_hourly_event');
}
function do_this_hourly() {
// do something every hour
}
Ich möchte Linux Cron wie folgt verwenden:
*/5 * * * * * /usr/local/bin/php/ /Path/to/file
Das Problem ist, dass wenn diese Datei so ist:
<?php
function do_something() {
echo 'Hello World';
}
do_something();
Do something function wird jedes Mal aufgerufen, wenn ich die Seite neu lade. Was ich brauche, ist eine Möglichkeit, mit Linux Cron anzugeben, so dass do_something () nur aufgerufen wird, wenn es Zeit ist, Cron auszuführen. Die Datei sollte also nur die Funktionsdefinition von do_something () haben, sie sollte die Funktion nicht direkt aufrufen.
<?php
function do_something() {
echo 'Hello World';
}
Ihre Cron-Jobs werden nur ausgeführt, wenn Sie es ihnen mitteilen.
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
Es könnte jedoch möglich sein, den Funktionsnamen an Ihr PHP zu übergeben
1 2 3 4 5 /path/to/command arg1 arg2
Führen Sie dann in Ihrer PHP -Datei die Task nur aus, wenn das Argument mit $_SERVER
oder $_GET
übergeben wurde.
Ihnen fehlt eine Schlüsselkomponente.
Fügen Sie dies zu Ihrem wp-config.php
hinzu: define( 'DISABLE_WP_CRON', true );
Hier sind einige andere hilfreiche Konstanten für Ihren wp-config.php
: https://Gist.github.com/MikeNGarrett/e20d77ca8ba4ae62adf5