Sau khi bạn thêm hằng số vào wp-config.php
defined('DISABLE_WP_CRON') or define('DISABLE_WP_CRON', true);
Và giả sử bạn đã config.yml
thiết lập chính xác, bạn có thể tắt --path
cờ khi gọi cron run
.
wp cron event run --due-now
[<hook>…]
Một hoặc nhiều móc để chạy.
[--due-now]
Chạy tất cả các móc do ngay bây giờ.
[--all]
Chạy tất cả các móc.
Để chạy tất cả các tác vụ cron theo thứ tự:
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;
Nếu bạn muốn chúng chạy đồng thời (trước tiên hãy chạy cron không dành riêng cho trang web):
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;
Bạn sẽ muốn đặt một trong hai tùy chọn trong một tập tin thực thi
chmod +x run_all_wp_cron_events_due_now.sh
thêm một nhiệm vụ crontab
crontab -e
và có thể thực hiện mỗi phút
* * * * * run_all_wp_cron_events_due_now.sh > /dev/null
Nếu bạn muốn chạy một lệnh tùy chỉnh từ cron, bạn có thể cần chỉ định các đường dẫn đầy đủ để wp-cli hoạt động.
* * * * * cd /home/username/public_html; /usr/local/bin/php /home/username/wp-cli.phar your-custom-cron-commands run >/dev/null 2>&1
PHP
Lý do duy nhất bạn cần tải lên WordPress ở đây là để thu thập các URL từ cơ sở dữ liệu thay vì sử dụng danh sách được xác định trước. Chúng tôi sẽ chỉ ping các URL đó và chúng tôi không thực sự quan tâm phản hồi là gì.
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 );
}
Và thêm một cuộc gọi custom-cron.php
vào crontab của bạn
* * * * * wget -q -O - http://your-site.com/custom-cron.php?doing_wp_cron
WP-CLI
mã cốt lõi chưa?