104 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Safe;
 | 
						|
 | 
						|
use Safe\Exceptions\MysqlndQcException;
 | 
						|
 | 
						|
/**
 | 
						|
 * Flush all cache contents.
 | 
						|
 *
 | 
						|
 * Flushing the cache is a storage handler responsibility.
 | 
						|
 * All built-in storage handler but the
 | 
						|
 * memcache storage
 | 
						|
 * handler support flushing the cache. The
 | 
						|
 * memcache
 | 
						|
 * storage handler cannot flush its cache contents.
 | 
						|
 *
 | 
						|
 * User-defined storage handler may or may not support the operation.
 | 
						|
 *
 | 
						|
 * @throws MysqlndQcException
 | 
						|
 *
 | 
						|
 */
 | 
						|
function mysqlnd_qc_clear_cache(): void
 | 
						|
{
 | 
						|
    error_clear_last();
 | 
						|
    $result = \mysqlnd_qc_clear_cache();
 | 
						|
    if ($result === false) {
 | 
						|
        throw MysqlndQcException::createFromPhpError();
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * 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.
 | 
						|
 *
 | 
						|
 * @param string $callback
 | 
						|
 * @return mixed Returns TRUE on success.
 | 
						|
 * @throws MysqlndQcException
 | 
						|
 *
 | 
						|
 */
 | 
						|
function mysqlnd_qc_set_is_select(string $callback)
 | 
						|
{
 | 
						|
    error_clear_last();
 | 
						|
    $result = \mysqlnd_qc_set_is_select($callback);
 | 
						|
    if ($result === false) {
 | 
						|
        throw MysqlndQcException::createFromPhpError();
 | 
						|
    }
 | 
						|
    return $result;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Sets the storage handler used by the query cache. A list of available
 | 
						|
 * storage handler can be obtained from
 | 
						|
 * mysqlnd_qc_get_available_handlers.
 | 
						|
 * Which storage are available depends on the compile time
 | 
						|
 * configuration of the query cache plugin. The
 | 
						|
 * default storage handler is always available.
 | 
						|
 * All other storage handler must be enabled explicitly when building the
 | 
						|
 * extension.
 | 
						|
 *
 | 
						|
 * @param string $handler Handler can be of type string representing the name of a
 | 
						|
 * built-in storage handler or an object of type
 | 
						|
 * mysqlnd_qc_handler_default.
 | 
						|
 * The names of the built-in storage handler are
 | 
						|
 * default,
 | 
						|
 * APC,
 | 
						|
 * MEMCACHE,
 | 
						|
 * sqlite.
 | 
						|
 * @throws MysqlndQcException
 | 
						|
 *
 | 
						|
 */
 | 
						|
function mysqlnd_qc_set_storage_handler(string $handler): void
 | 
						|
{
 | 
						|
    error_clear_last();
 | 
						|
    $result = \mysqlnd_qc_set_storage_handler($handler);
 | 
						|
    if ($result === false) {
 | 
						|
        throw MysqlndQcException::createFromPhpError();
 | 
						|
    }
 | 
						|
}
 |