2012-01-01 19 views
4

私は本当にこの1つに困っています。CrontabでW3トータルキャッシュ機能を実行

基本的には、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_mail関数を使ってテストし、何かが得られることを確認しました。

ページキャッシュが決してフラッシュされない点を除いて、スクリプトは正常に動作しています。私は電子メールを受け取り、ログにもエラーはありません。

アイデア?

ありがとうございました。

+0

デフォルトで使用する最小限のパスについては、crontabのエントリが悪名を持っています。 crontabや呼び出されたスクリプトでPATHをPHPコードに設定していない限り、PHPライブラリを見つけることができないと思います。このアイデアをテストするには、else条件を指定してw3tc_pgcache_flushが存在しないという警告を出力しますか?がんばろう。 – shellter

+0

うーん...そうかもしれない。私は確かにwp-load.phpファイルへの完全なパスを使用しています。しかし、w3tc関数を実行するために必要なものが見つからないようです。 wp-load.phpには、その機能がWordPressのプラグインファイルに到達するために必要なすべてが含まれていると考えられました。私が必要とする可能性のある他のファイルは何ですか? – David

答えて

0

変更オーダービット、それはまだ動作するかどうか試してみてください。

w3tc_pgcache_flush(); # let it crash here so that you won't get the mail 
wp_mail('[email protected]', 'Automatic email', 'Hello, this is an automatically scheduled email from WordPress.'); 
+0

まだ、動作していません。しかし、私は注文を切り替えても、両方の電子メールを取得しました。おそらく私はそのプラグイン関数が呼び出されるために別のものが必要でしょうか? – David

+1

しかし、あなたのインストールはリモートデバッグの下でWP_CRON要求を起動し、何が起こるかを確認するためにステップスルーします。また、プラグインがいくつかの報告や戻り値を使って、エラーや不一致の前提条件について話すことができるかどうかを確認します。 – hakre

4

より良いバージョンは今wp-cliを使用することです。最新バージョン(0.9.2.8)はこのプラグインと互換性があります。

wp w3-total-cache flush 
関連する問題