【发布时间】:2012-01-31 06:44:11
【问题描述】:
好的。我真的被这个难住了。
基本上,我需要调用 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@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 功能进行测试并确保我得到了一些东西。
脚本运行良好,只是页面缓存从不刷新。我收到了电子邮件,日志中也没有任何错误。
有什么想法吗?
感谢您的帮助。
【问题讨论】:
-
crontab 条目因其默认使用的最小路径而臭名昭著。除非您在 crontab 或调用脚本中为 PHP 代码设置 PATH,否则我认为它无法找到您的 php 库。为了测试这个想法,设置一个 else 条件来打印 w3tc_pgcache_flush 不存在的警告?祝你好运。
-
嗯...可能就是这样。我当然使用 wp-load.php 文件的完整路径。但它似乎找不到运行 w3tc 函数所需的内容。我认为 wp-load.php 将包含该函数访问 wordpress 插件文件所需的一切。关于我可能需要什么其他文件的任何想法?
标签: php wordpress plugins command-line crontab