Запустите функцию полного кэширования W3 с помощью Crontab - PullRequest
4 голосов
/ 01 января 2012

Хорошо. Я действительно в замешательстве.

По сути, мне нужно вызвать функцию для плагина Wordpress W3 Total Cache как часть задания cron в crontab. Я хочу автоматически очищать весь кэш страниц каждую ночь.

Вот код, который отлично работает в WordPress, который мне нужно вызвать:

if (function_exists('w3tc_pgcache_flush')) {
w3tc_pgcache_flush();
} 

В настоящее время я использую следующий скрипт:

#!/usr/bin/php

<?php

define('DOING_AJAX', true);
define('WP_USE_THEMES', false);
$_SERVER = array(
    "HTTP_HOST" => "http://example.com",
    "SERVER_NAME" => "http://example.com",
    "REQUEST_URI" => "/",
    "REQUEST_METHOD" => "GET"
);
require_once('/path-to-file/wp-load.php');

wp_mail('email@example.com', 'Automatic email', 'Hello, this is an automatically scheduled email from WordPress.');

if (function_exists('w3tc_pgcache_flush')) {
w3tc_pgcache_flush();
} 

?>

и командная строка:

php -q /path-to-file/flushtest.php

Я использовал функцию wp_mail, чтобы проверить и убедиться, что я что-то получаю.

Скрипт работает нормально, за исключением того, что кэш страницы никогда не очищается. Я получаю электронное письмо, и в журнале тоже нет ошибок.

Есть идеи?

Спасибо за вашу помощь.

Ответы [ 2 ]

4 голосов
/ 19 февраля 2013

Лучшая версия теперь должна использовать wp-cli . Последняя версия (0.9.2.8) совместима с этим плагином. Просто запустите эту команду из любого места в вашем каталоге WordPress:

wp w3-total-cache flush
0 голосов
/ 01 января 2012

Измените порядок, попробуйте, если он все еще работает:

w3tc_pgcache_flush(); # let it crash here so that you won't get the mail
wp_mail('email@example.com', 'Automatic email', 'Hello, this is an automatically scheduled email from WordPress.');
...