'includes / menu.php'というランダムデータを取得するメニューからキャッシュファイルを作成しようとしています。そのファイルを手動で実行すると、ランダムデータが作成されます。ここで、このデータを一定時間ファイルにキャッシュしてから、再キャッシュしたいと思います。コードキャッシュが作成されたため、2つの問題が発生しましたが、phpページ全体がキャッシュされ、結果はキャッシュされず、実行せずにコードのみがキャッシュされます。私は何が間違っているのですか?これが私が今まで持っていたものです:
<?php
$cache_file = 'cachemenu/content.cache';
if(file_exists($cache_file)) {
if(time() - filemtime($cache_file) > 86400) {
// too old , re-fetch
$cache = file_get_contents('includes/menu.php');
file_put_contents($cache_file, $cache);
} else {
// cache is still fresh
}
} else {
// no cache, create one
$cache = file_get_contents('includes/menu.php');
file_put_contents($cache_file, $cache);
}
?>
この行
file_get_contents('includes/menu.php');
実行せずに、phpファイルを読み取るだけです。代わりにこのコードを使用してください(phpファイルを実行し、結果を変数に保存します):
ob_start();
include 'includes/menu.php';
$buffer = ob_get_clean();
次に、取得したコンテンツ($ buffer)をファイルに保存するだけです
file_put_contents($cache_file, $buffer);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加