Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

mysqlnd_qc_set_is_select(3) [php man page]

MYSQLND_QC_SET_IS_SELECT(3)						 1					       MYSQLND_QC_SET_IS_SELECT(3)

mysqlnd_qc_set_is_select - Installs a callback which decides whether a statement is cached

SYNOPSIS
mixed mysqlnd_qc_set_is_select (string $callback) DESCRIPTION
Installs a callback which decides whether a statement is cached. There are several ways of hinting PELC/mysqlnd_qc to cache a query. By default, PECL/mysqlnd_qc attempts to cache a if caching of all statements is enabled or the query string begins with a certain SQL hint. The plugin internally calls a function named is_select() to find out. This internal function can be replaced with a user-defined callback. Then, the user-defined callback is responsible to decide whether the plugin attempts to cache a statement. Because the internal function is replaced with the callback, the callback gains full control. The callback is free to ignore the configuration setting mysqlnd_qc.cache_by_default and SQL hints. The callback is invoked for every statement inspected by the plugin. It is given the statements string as a parameter. The callback returns FALSE if the statement shall not be cached. It returns TRUE to make the plugin attempt to cache the statements result set, if any. A so-created cache entry is given the default TTL set with the PHP configuration directive mysqlnd_qc.ttl. If a different TTL shall be used, the callback returns a numeric value to be used as the TTL. The internal is_select function is part of the internal cache storage handler interface. Thus, a user-defined storage handler offers the same capabilities. PARAMETERS
This function has no parameters. RETURN VALUES
Returns TRUE on success or FALSE on failure. EXAMPLES
Example #1 mysqlnd_qc_set_is_select(3) example <?php /* callback which decides if query is cached */ function is_select($query) { static $patterns = array( /* true - use default from mysqlnd_qc.ttl */ "@SELECTs+.*s+FROMs+test@ismU" => true, /* 3 - use TTL = 3 seconds */ "@SELECTs+.*s+FROMs+news@ismU" => 3 ); /* check if query does match pattern */ foreach ($patterns as $pattern => $ttl) { if (preg_match($pattern, $query)) { printf("is_select(%45s): cache ", $query); return $ttl; } } printf("is_select(%45s): do not cache ", $query); return false; } mysqlnd_qc_set_is_select("is_select"); /* Connect, create and populate test table */ $mysqli = new mysqli("host", "user", "password", "schema"); $mysqli->query("DROP TABLE IF EXISTS test"); $mysqli->query("CREATE TABLE test(id INT)"); $mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)"); /* cache put */ $mysqli->query("SELECT id FROM test WHERE id = 1"); /* cache hit */ $mysqli->query("SELECT id FROM test WHERE id = 1"); /* cache put */ $mysqli->query("SELECT * FROM test"); ?> The above examples will output: is_select( DROP TABLE IF EXISTS test): do not cache is_select( CREATE TABLE test(id INT)): do not cache is_select( INSERT INTO test(id) VALUES (1), (2), (3)): do not cache is_select( SELECT id FROM test WHERE id = 1): cache is_select( SELECT id FROM test WHERE id = 1): cache is_select( SELECT * FROM test): cache SEE ALSO
Runtime configuration, mysqlnd_qc.ttl, mysqlnd_qc.cache_by_default, mysqlnd_qc_set_user_handlers(3). PHP Documentation Group MYSQLND_QC_SET_IS_SELECT(3)

Check Out this Related Man Page

MYSQLND_UH_SET_CONNECTION_PROXY(3)					 1					MYSQLND_UH_SET_CONNECTION_PROXY(3)

mysqlnd_uh_set_connection_proxy - Installs a proxy for mysqlnd connections

SYNOPSIS
bool mysqlnd_uh_set_connection_proxy (MysqlndUhConnection &$connection_proxy, [mysqli &$mysqli_connection]) DESCRIPTION
Installs a proxy object to hook mysqlnd's connection objects methods. Once installed, the proxy will be used for all MySQL connections opened with mysqli, mysql or PDO_MYSQL, assuming that the listed extensions are compiled to use the mysqlnd library. The function can be disabled with mysqlnd_uh.enable. If mysqlnd_uh.enable is set to FALSE the function will not install the proxy and always return TRUE. Additionally, an error of the type E_WARNING may be emitted. The error message may read like PHP Warning: mysqlnd_uh_set_connection_proxy(): (Mysqlnd User Handler) The plugin has been disabled by setting the configuration parameter mysqlnd_uh.enable = false. The proxy has not been installed [...]. PARAMETERS
o $connection_proxy - A proxy object of type MysqlndUhConnection. o $mysqli_connection - Object of type mysqli. If given, the proxy will be set for this particular connection only. RETURN VALUES
Returns TRUE on success. Otherwise, returns FALSE EXAMPLES
Example #1 mysqlnd_uh_set_connection_proxy(3) example <?php $mysqli = new mysqli("localhost", "root", "", "test"); $mysqli->query("SELECT 'No proxy installed, yet'"); class proxy extends MysqlndUhConnection { public function query($res, $query) { printf("%s(%s) ", __METHOD__, var_export(func_get_args(), true)); $ret = parent::query($res, $query); printf("%s returns %s ", __METHOD__, var_export($ret, true)); return $ret; } } mysqlnd_uh_set_connection_proxy(new proxy()); $mysqli->query("SELECT 'mysqlnd rocks!'"); $mysql = mysql_connect("localhost", "root", "", "test"); mysql_query("SELECT 'Ahoy Andrey!'", $mysql); $pdo = new PDO("mysql:host=localhost;dbname=test", "root", ""); $pdo->query("SELECT 'Moin Johannes!'"); ?> The above example will output: proxy::query(array ( 0 => NULL, 1 => 'SELECT 'mysqlnd rocks!'', )) proxy::query returns true proxy::query(array ( 0 => NULL, 1 => 'SELECT 'Ahoy Andrey!'', )) proxy::query returns true proxy::query(array ( 0 => NULL, 1 => 'SELECT 'Moin Johannes!'', )) proxy::query returns true SEE ALSO
mysqlnd_uh_set_statement_proxy(3), mysqlnd_uh.enable. PHP Documentation Group MYSQLND_UH_SET_CONNECTION_PROXY(3)
Man Page