使用CronTab运行W3总缓存刷新功能

时间:2012-01-01 作者:David

好啊我真的被这件事难住了。

基本上,我需要为Wordpress插件W3 Total Cache调用一个函数,作为crontab中cron作业的一部分。我想每晚自动清除整个页面缓存。

以下是我需要调用的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 protected]\', \'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\\u邮件功能来测试并确保我得到了一些东西。

脚本工作正常,只是页面缓存从未刷新。我收到了电子邮件,日志中也没有任何错误。

有什么想法吗?

谢谢你的帮助。

1 个回复
SO网友:Brian Fegter

我会这样做:

首先在您的主题目录中创建一个文件,文件名用哈希表示-这个是md5(“foobar”):

3858f62230ac3c915f300c664312c63f.php
该文件中的内容如下:

//Use the file name as an API key of sorts
$file = explode(\'.\', basename(__FILE__));
$key = $file[0];

//Trigger the WP function - corresponds to the foo_w3tc_flush_cron() function
define(\'FOO_W3TC_FLUSH\', true);
define(\'FOO_W3TC_FLUSH_KEY\', $key);

//Set headers
Header(\'Cache-Control: no-cache\');
Header(\'Pragma: no-cache\');

//Set W3TC Constants
define(\'DONOTMINIFY\', true);
define(\'DONOTCACHEDB\', true);
define(\'DONOTCACHEPAGE\', true);

//Set WP Constants
define(\'DOING_AJAX\', true);

//Load WP
if(file_exists($_SERVER[\'DOCUMENT_ROOT\'].\'/wp-load.php\'))
    require_once($_SERVER[\'DOCUMENT_ROOT\'].\'/wp-load.php\');
die();
向函数中添加函数。php文件类似于以下内容:

$api_key_plaintext = \'foobar\';
define(\'FOO_W3TC_FLUSH_API_KEY\', md5($api_key_plaintext));

add_action(\'plugins_loaded\', \'foo_w3tc_flush_cron\', 1);
function foo_w3tc_flush_cron(){
    $update = FOO_W3TC_FLUSH_UPDATE;
    $key = FOO_W3TC_FLUSH_UPDATE_KEY;

    if($update && $key == FOO_W3TC_FLUSH_API_KEY){
        if (function_exists(\'w3tc_pgcache_flush\')){
            if(w3tc_pgcache_flush())
                wp_mail(\'[email protected]\', \'Success!\', \'Hello, this is an automatically scheduled email from WordPress.\');
            else
                wp_mail(\'[email protected]\', \'Failure\', \'Hello, this is an automatically scheduled email from WordPress.\');
        }
        echo "Foo W3TC Cache Message"; //For logger
        die(); //We don\'t need the rest of WP to load
    }

}
最后,我将添加以下crontab以在晚上11:59(您的服务器时间)运行,并包括一个到主目录的文件路径以记录结果:

59 23 * * * curl --header \'Cache-Control: max-age=0\' http://your-domain.com/wp-content/themes/your-theme/3858f62230ac3c915f300c664312c63f.php >> /home/myuser/w3tc-flush.log
希望这有帮助!

结束

相关推荐

在Image.php图库的末尾添加“更多图库”页面

在许多杂志网站上,当你点击一个图库(在WP中使用image.php模板完成)时,最后一次点击会将你带到一个“更多图库”页面。我想实现类似的目标,并希望通过为“更多画廊”页面制作模板来实现这一目标。问题是我不知道如何让我的下一个/上一个链接在最后一张图片上显示上一个链接,该链接会重定向到“更多画廊”页面,而不是另一张图片。I figure the best way to do this would be to add a statement to the previous link which sends

使用CronTab运行W3总缓存刷新功能 - 小码农CODE - 行之有效找到问题解决它

使用CronTab运行W3总缓存刷新功能

时间:2012-01-01 作者:David

好啊我真的被这件事难住了。

基本上,我需要为Wordpress插件W3 Total Cache调用一个函数,作为crontab中cron作业的一部分。我想每晚自动清除整个页面缓存。

以下是我需要调用的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 protected]\', \'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\\u邮件功能来测试并确保我得到了一些东西。

脚本工作正常,只是页面缓存从未刷新。我收到了电子邮件,日志中也没有任何错误。

有什么想法吗?

谢谢你的帮助。

1 个回复
SO网友:Brian Fegter

我会这样做:

首先在您的主题目录中创建一个文件,文件名用哈希表示-这个是md5(“foobar”):

3858f62230ac3c915f300c664312c63f.php
该文件中的内容如下:

//Use the file name as an API key of sorts
$file = explode(\'.\', basename(__FILE__));
$key = $file[0];

//Trigger the WP function - corresponds to the foo_w3tc_flush_cron() function
define(\'FOO_W3TC_FLUSH\', true);
define(\'FOO_W3TC_FLUSH_KEY\', $key);

//Set headers
Header(\'Cache-Control: no-cache\');
Header(\'Pragma: no-cache\');

//Set W3TC Constants
define(\'DONOTMINIFY\', true);
define(\'DONOTCACHEDB\', true);
define(\'DONOTCACHEPAGE\', true);

//Set WP Constants
define(\'DOING_AJAX\', true);

//Load WP
if(file_exists($_SERVER[\'DOCUMENT_ROOT\'].\'/wp-load.php\'))
    require_once($_SERVER[\'DOCUMENT_ROOT\'].\'/wp-load.php\');
die();
向函数中添加函数。php文件类似于以下内容:

$api_key_plaintext = \'foobar\';
define(\'FOO_W3TC_FLUSH_API_KEY\', md5($api_key_plaintext));

add_action(\'plugins_loaded\', \'foo_w3tc_flush_cron\', 1);
function foo_w3tc_flush_cron(){
    $update = FOO_W3TC_FLUSH_UPDATE;
    $key = FOO_W3TC_FLUSH_UPDATE_KEY;

    if($update && $key == FOO_W3TC_FLUSH_API_KEY){
        if (function_exists(\'w3tc_pgcache_flush\')){
            if(w3tc_pgcache_flush())
                wp_mail(\'[email protected]\', \'Success!\', \'Hello, this is an automatically scheduled email from WordPress.\');
            else
                wp_mail(\'[email protected]\', \'Failure\', \'Hello, this is an automatically scheduled email from WordPress.\');
        }
        echo "Foo W3TC Cache Message"; //For logger
        die(); //We don\'t need the rest of WP to load
    }

}
最后,我将添加以下crontab以在晚上11:59(您的服务器时间)运行,并包括一个到主目录的文件路径以记录结果:

59 23 * * * curl --header \'Cache-Control: max-age=0\' http://your-domain.com/wp-content/themes/your-theme/3858f62230ac3c915f300c664312c63f.php >> /home/myuser/w3tc-flush.log
希望这有帮助!

相关推荐

无法在WordPress中通过PHP显示图像

我有一个奇怪的问题,当我尝试使用PHP输入图像标记的源代码时,它会在检查器中显示以下错误<img src=(unknown) alt=\"\"> 这个代码片段为我提供了正确的url,通过查看CPanel并粘贴和复制地址进行检查,但当我尝试通过php输入它时,不会显示图像$image = wp_get_attachment_image_src( $post_thumbnail_id); //echo($image[0]); ?> <img src=