PEAR を使用して PHP プログラムをバッファーする (2)

WBOY
リリース: 2016-06-21 09:10:27
オリジナル
879 人が閲覧しました

プログラム

最後に、アプリケーションをカスタマイズして、PEAR バッファリング メカニズムの全体的なフレームワークを包括的に説明しましょう。


SELECT クエリの結果をバッファリングするために、MySQL_Query_Cache というクラスを定義します。

最初にクラス変数を定義します:



require_once 'Cache.php';

class MySQL_Query_Cache extends Cache {
var $connection = null;
var $expires = 3600;

var $カーソル = 0;
var $result = array();

function MySQL_Query_Cache($container = 'file',
$container_options = array('cache_dir'=> '.',
'filename_prefix' => 'cache_ '), $expires = 3600)
{
$this->Cache($container, $container_options);
$this->expires = $expires
}

function _MySQL_Query_Cache() {
if (is_resource() $this->connection)) {
mysql_close($this->connection);
}

$this->_Cache();
}
}
?>


正式に開始する前に、いくつかのヘルパー関数が必要です。

function connect($hostname, $username, $password, $database) {
$this->connection = mysql_connect($hostname, $username, $password) ortrigger_error('データベース接続に失敗しました!', E_USER_ERROR);

mysql_select_db($database, $this->connection) またはtrigger_error('データベースの選択に失敗しました!', E_USER_ERROR);
}

function fetch_row() {
if ($this->cursor < sizeof($ this->result)) {
return $this->result[$this->cursor++];
} else {
return false;
}
}

function num_rows() {
return sizeof($this ->result);
}
?>


バッファリングの方法を見てみましょう:

function query($query) {
if (stristr($query, 'SELECT')) {
// クエリのキャッシュタグを計算します
$cache_id = md5($query);

// クエリバッファ
$this->result = $this->get($cache_id, 'mysql_query_cache');

if ($this->result == NULL) {
// バッファ損失
$this->cursor = 0;
$this->result = array();

if (is_resource($this- > connection)) {
// 可能な限り mysql_unbuffered_query() を使用します

if (function_exists('mysql_unbuffered_query')) {$result = mysql_unbuffered_query($query, $this->connection);
} else {$result = mysql_query( $query, $this->connection);
}

// すべてのクエリ結果を取得します
while ($row = mysql_fetch_assoc($result)) {$this->result[] = $row;
}

// MySQL 結果リソースを解放します
mysql_free_result($result);
// 結果をバッファリングします
$this->save($cache_id, $this->result, $this->expires, 'mysql_query_cache') ;
}
}
} else {
// クエリ結果なし、バッファリング不要
return mysql_query($query, $this->connection);
}
}
?>


例 3: MySQL の使用クエリバッファリング


$cache = new MySQL_Query_Cache();
$cache->connect('hostname', 'username', 'password', 'database');
$cache->query('select * from table');

while ($row = $cache->fetch_row()) {
echo '

';
print_r($row);
echo '

';
}
?>



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート