Nachdem Sie die Konstante hinzugefügt haben wp-config.php
defined('DISABLE_WP_CRON') or define('DISABLE_WP_CRON', true);
Und vorausgesetzt, Sie haben Ihr config.yml
Setup korrekt, können Sie das --path
Flag beim Aufruf weglassen cron run
.
wp cron event run --due-now
[<hook>…]
Ein oder mehrere Hooks, die ausgeführt werden sollen.
[--due-now]
Führen Sie jetzt alle fälligen Hooks aus.
[--all]
Führen Sie alle Haken aus.
So führen Sie alle fälligen Cron-Tasks in der angegebenen Reihenfolge aus:
function run_crons_due_now_in_order { for SITE_URL in $(wp site list --fields=url --format=csv | tail -n +2 | sort); do wp cron event run --due-now --url="$SITE_URL" && echo -e "\t+ Finished crons for $SITE_URL"; done; echo "Done"; }; run_crons_due_now_in_order;
Wenn Sie möchten, dass sie gleichzeitig ausgeführt werden (zuerst das nicht standortspezifische Cron ausführen):
function run_all_crons_due_now { for SITE_URL in $(wp site list --fields=url --format=csv | tail -n +2 | sort); do wp cron event run --due-now --url="$SITE_URL" && echo -e "\t+ Finished crons for $SITE_URL" & done; wait $(jobs -p); echo "Done"; }; run_all_crons_due_now;
Sie möchten eine der beiden Optionen in eine ausführbare Datei einfügen
chmod +x run_all_wp_cron_events_due_now.sh
Fügen Sie eine Crontab-Aufgabe hinzu
crontab -e
und wahrscheinlich jede Minute ausführen
* * * * * run_all_wp_cron_events_due_now.sh > /dev/null
Wenn Sie einen benutzerdefinierten Befehl von cron ausführen möchten , müssen Sie möglicherweise die vollständigen Pfade angeben, damit wp-cli funktioniert.
* * * * * cd /home/username/public_html; /usr/local/bin/php /home/username/wp-cli.phar your-custom-cron-commands run >/dev/null 2>&1
PHP
Der einzige Grund, warum Sie WordPress hier laden müssen, ist, die URLs aus der Datenbank zu sammeln, anstatt eine vordefinierte Liste zu verwenden. Wir werden nur diese URLs pingen und es ist uns egal, wie die Antwort lautet.
custom-cron.php
<?php
// Load WP
require_once( dirname( __FILE__ ) . '/wp-load.php' );
// Check Version
global $wp_version;
$gt_4_6 = version_compare( $wp_version, '4.6.0', '>=' );
// Get Blogs
$args = array( 'archived' => 0, 'deleted' => 0, 'public' => 1 );
$blogs = $gt_4_6 ? get_sites( $args ) : @wp_get_sites( $args ); // >= 4.6
// Run Cron on each blog
echo "Running Crons: " . PHP_EOL;
$agent = 'WordPress/' . $wp_version . '; ' . home_url();
$time = time();
foreach ( $blogs as $blog ) {
$domain = $gt_4_6 ? $blog->domain : $blog['domain'];
$path = $gt_4_6 ? $blog->path : $blog['path'];
$command = "http://" . $domain . ( $path ? $path : '/' ) . 'wp-cron.php?doing_wp_cron=' . $time . '&ver=' . $wp_version;
$ch = curl_init( $command );
$rc = curl_setopt( $ch, CURLOPT_RETURNTRANSFER, false );
$rc = curl_exec( $ch );
curl_close( $ch );
print_r( $rc );
print_r( "\t✔ " . $command . PHP_EOL );
}
Und fügen Sie einen einzelnen Anruf custom-cron.php
in einer Crontab hinzu
* * * * * wget -q -O - http://your-site.com/custom-cron.php?doing_wp_cron
WP-CLI
Kerncode angesehen?