以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
SQL ヒント関係
例1 SQL ヒント定数の利用
クエリキャッシュは、SQL ヒントで制御します。 SQL ヒントを使って、キャッシングを有効または無効にします。 SQL ヒントを使うと、クエリの TTL を設定できます。
クエリキャッシュが認識する SQL ヒントは、コンパイル時に手動で変更できます。 そのため、デフォルトの SQL ヒントが他のシステムによってすでに取り入れられて、 解釈・実行された環境でも mysqlnd_qc を使えます。 この理由から、クエリ文字列にデフォルトの SQL ヒントを手動で追加するよりも SQL ヒント文字列定数を使うことを推奨します。
<?php
/* 可搬性を最大にするために定数を使用 */
$query = "/*" . MYSQLND_QC_ENABLE_SWITCH . "*/SELECT id FROM test";
/* 有効ですが、可搬性がより少なくなります: デフォルトの TTL */
$query = "/*qc=on*/SELECT id FROM test";
/* 有効ですが、可搬性がより少なくなります: ステートメント TTL 単位 */
$query = "/*qc=on*//*qc_ttl=5*/SELECT id FROM test";
printf("MYSQLND_QC_ENABLE_SWITCH: %s\n", MYSQLND_QC_ENABLE_SWITCH);
printf("MYSQLND_QC_DISABLE_SWITCH: %s\n", MYSQLND_QC_DISABLE_SWITCH);
printf("MYSQLND_QC_TTL_SWITCH: %s\n", MYSQLND_QC_TTL_SWITCH);
?>
上の例の出力は以下となります。
MYSQLND_QC_ENABLE_SWITCH: qc=on MYSQLND_QC_DISABLE_SWITCH: qc=off MYSQLND_QC_TTL_SWITCH: qc_ttl=
MYSQLND_QC_ENABLE_SWITCH
(string)
MYSQLND_QC_DISABLE_SWITCH
(string)
MYSQLND_QC_TTL_SWITCH
(string)
MYSQLND_QC_SERVER_ID_SWITCH
(string)
mysqlnd_qc_set_cache_condition() 関係
例2 mysqlnd_qc_set_cache_condition() の使用例
mysqlnd_qc_set_cache_condition() 関数を使うと、ステートメントの自動キャッシュを行うための条件を設定できます。 SQL ヒントがついていないために手動でのキャッシュが必要となるステートメントであっても、条件を満たせば自動でキャッシュされます。
<?php
/* "db_example" スキーマ(データベース) にある "new%" という名前のテーブルへのアクセスをすべて 1 秒間キャッシュします */
if (!mysqlnd_qc_set_cache_condition(MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN, "db_example.new%", 1)) {
die("Failed to set cache condition!");
}
$mysqli = new mysqli("host", "user", "password", "db_example", "port");
/* SQL ヒントはありませんが、これはキャッシュされます */
$mysqli->query("SELECT id, title FROM news");
$pdo_mysql = new PDO("mysql:host=host;dbname=db_example;port=port", "user", "password");
/* SQL ヒントもないし、パターンにもマッチしないのでキャッシュされません */
$pdo_mysql->query("SELECT id, title FROM latest_news");
/* パターンにマッチするので、TTL 1 秒でキャッシュされます */
$pdo_mysql->query("SELECT id, title FROM news");
?>
MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN
(int)