コマンドラインでWordPressを実行する-遅延出力をオフにしますか?


8

WordPressの外部で実行されるcronジョブを作成しています。開発の観点から見ると、コマンドラインで次のようなコマンドを実行するだけで、クリーンアップスクリプトまたはcronジョブをデバッグおよび作成することが非常に簡単になります。

php myfile.php

私の問題は、WordPressが何らかの形ですべての出力を遅延させることです。通常、このようなphpファイルを実行すると、出力はリアルタイムで画面に生成されます。

WPがジョブの終了まですべての出力を遅らせるのを防ぐ方法を知っている人はいますか?これはおそらく、PHPファイルの実行時に欠落している単純なパラメーターか、何らかの定数ですが、よくわかりません。

次のコードでは、各出力の間に1秒の遅延があることが予想されますが、代わりに現在、最後にすべての情報が一度に印刷されます。

set_time_limit( 0 );
ini_set( "memory_limit", "64M" );

ob_start();
require_once( dirname( __FILE__ ) . '/wp-load.php' ); // you need to adjust this to your path
ob_end_clean();

global $wpdb;
$q = $wpdb->prepare ("SELECT * FROM wp_posts LIMIT 5");
$results = $wpdb->get_results ($q);
echo "found " . count ($results) . "\n";

foreach ($results as $post)
{
    echo $post->post_title . "\n";
    sleep(1);
}

echo "\n\ndone";

私はそれがサーバーの設定に関係していて、ワードプレス自体に関係していると思います。コードをテストしました。コマンドラインから実行すると、サーバー上で意図したとおりに機能します。おそらくキャッシュするプラグインはありますか?
Kokarn、2012年

@Kokarnあなたは正しいです。これを別のWPインストールでテストする必要がありました。W3 Total Cacheを使用しているためです。(プラグインを非アクティブにするのではなく)最終的な解決策をここに投稿します。
アレックスクック

回答:


10

実際にいくつかのテストを行った後、WP Super CacheとW3 Total Cacheはどちらもバッファーを解放しません(またはバッファーが解放されなくなります)。

「出力遅延」をオフにするのは簡単で、関連するキャッシングプラグインによって異なります。

WPスーパーキャッシュ

wp_cache_disable();
ob_end_flush(); // or ob_end_clean();

これはwp-load.php、を組み込んだ後に追加する必要があります。これにより、トラック内のデッドキャッシュが停止し、バッファがフラッシュされます。

W3合計キャッシュ

ob_end_clean(); // or ob_end_flush();

上記とwp-load.php同様に、そこにあるものと同様に、をインクルードした後に呼び出します。フラッシュだけで機能するはずですが、W3 Total Cacheはバッファを開始しますが、フラッシュ自体を妨げるようには見えません。出力がまだキャッシュされており、フラッシュが機能しない方法で判断すると、より強力なWP Super Cacheがあると思います。

を含める前に新しいバッファを開始しないようにしてください。そうしないwp-load.phpと、バッファ内にバッファがあり(bufferception?)、2回以上フラッシュする必要があります。


ありがとう-この回答は、コードサンプルで特に役立ちます。まだテストする時間はありませんが、今すぐ確認します。
Alex Cook

W3 Total Cacheを使用しています。「wp_cache_disable」は有効な関数ではないようです-これはSuper Cacheに固有のものですか?
アレックスクック

はい、wp_cache_disable()WP Super Cacheに固有です。W3 Total Cacheを調べ、同じようにしob_end_flushて無効にする方法を確認します。W3 Total Cacheの設定とバージョンは何ですか?
soulseekah

回答を編集しました。
soulseekah

wp-load.phpをインクルードする前に新しいバッファーを開始しないようにしてください。そうしないと、バッファー内にバッファーが存在します。
soulseekah

4

ページ全体のキャッシュを行うプラグインを無効にします。WP-Super-Cache、W3 Total Cacheなど

WordPressは「出力を遅延」しません。しかし、ページ全体のキャッシュプラグインは通常は動作します。これは、後でページを提供する際に使用できるように、その出力を取得してどこかに保存しようとしているためです。したがって、ページ出力はプラグインがページをキャッシュできる最後まで延期されます。


ああ、良いキャッチ。それを考えるべきだった!私はテストしてあなたに連絡します。ありがとう。
アレックスクック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.