Description

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.