Je sais que WordPress a un faux cron qui s'appelle ainsi quand un utilisateur visite la page.
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
}
Je veux utiliser linux cron comme ceci:
*/5 * * * * * /usr/local/bin/php/ /Path/to/file
Le problème est que si ce fichier est comme ceci:
<?php
function do_something() {
echo 'Hello World';
}
do_something();
La fonction "faire quelque chose" est appelée à chaque fois que je recharge la page. Ce dont j'ai besoin, c'est d'un moyen de spécifier avec linux cron afin que do_something () ne soit appelé que lorsqu'il est temps d'exécuter cron. Donc, le fichier devrait simplement avoir la définition de fonction de do_something () et ne devrait pas appeler la fonction directement.
<?php
function do_something() {
echo 'Hello World';
}
Vos tâches cron ne sont exécutées que lorsque vous leur dites de le faire.
* * * * * 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)
Mais il pourrait être possible de passer le nom de la fonction à votre PHP comme
1 2 3 4 5 /path/to/command arg1 arg2
Ensuite, dans votre fichier PHP, exécutez la tâche uniquement si l'argument a été passé à l'aide de $_SERVER
ou $_GET
.
Il vous manque un élément clé.
Ajoutez ceci à votre wp-config.php
: define( 'DISABLE_WP_CRON', true );
Voici quelques autres constantes utiles pour votre wp-config.php
: https://Gist.github.com/MikeNGarrett/e20d77ca8ba4ae62adf5