それで、昨日 memcache の使い方を学び始めたところです。ですから、やるべきことはまだたくさんあります。これまでのところ、インストール方法を理解しており、使用方法に関するいくつかのチュートリアルを見てきました。しかし、それらはすべて静的に入力する方法を説明しています。すべてのデータベース クエリをクラスで実行し、返されたデータを foreach ループで処理します。コンパイル エラーなしで動作するようになりましたが、memcache は実際には動作しません。なぜだか混乱しています。私のクラスはこのように設定されています。
class Feed extends Database
{
private $Memcache;
public function __construct()
{
parent::__construct();
$this->Memcache = new Memcache;
} //end __construct
public function getFeed ($var)
{
$feed = array(); //Initialize an empty array
$this->Memcache->connect('localhost', 11211);
$key = "SELECT col FROM table WHERE value = " . $var . " ORDER BY timestamp DESC LIMIT 30";
$cache = $this->Memcache->get($key);
if ($cache)
{
$feed = '';
}
else
{
//Query the database
$Statement = $this->Database->prepare("SELECT col FROM table WHERE value = ? ORDER BY timestamp DESC LIMIT 30");
$Statement->execute(array($var));
while($row = $Statement->fetch(PDO::FETCH_ASSOC))
{
$feed[] = array("row1" => $row["col1"],
"row2" => $row["col2"] );
}
$this->Memcache->set($key, $row, 0, 40); // Store the result of the query for 40 seconds
}
return $feed;
} //end getFeed
} //end Feed
出力は次のように設定されています
<?php foreach ($Feed->getFeed($var) as $feed): ?>
<p><?php echo $feed["row1"]; ?></p>
<?php endforeach; ?>
したがって、memcache が機能していた場合、foreach ループで $feed を実行しているため、明らかにコンパイル エラーになります。私は memcache についての知識が限られているため、データを取得できない理由を知っている人はいますか?
どうもありがとうございました!