Tribe__Cache::get_chunkable_transient( string $id, string|array $expiration_trigger = '' )
Returns a transient that might have been stored, due ot its size, in chunks.
Contents
Parameters
- $id
-
(string) (Required) The name of the transients to return.
- $expiration_trigger
-
(string|<span class="array">array) (Optional) The transient expiration trigger(s).
Default value: ''
Return
(false|mixed) Either the transient value, joined back into one, or false to indicate the transient was not found or was malformed.
Source
File: src/Tribe/Cache.php
public function get_chunkable_transient( $id, $expiration_trigger = '' ) {
$transient = $this->get_id( $id, $expiration_trigger );
if ( wp_using_ext_object_cache() ) {
return get_transient( $transient );
}
$chunks = [];
$i = 0;
do {
$chunk_transient = $transient . '_' . $i++;
$chunk = get_transient( $chunk_transient );
$chunks[ $chunk_transient ] = (string) $chunk;
} while ( ! empty( $chunk ) );
// Remove any piece of data that was added but is not relevant.
$chunks = array_filter( $chunks );
if ( empty( $chunks ) ) {
return false;
}
try {
$data = implode( '', $chunks );
$is_serialized = preg_match( '/^[aO]:\\d+:/', $data );
$unserialized = maybe_unserialize( implode( '', $chunks ) );
if ( is_string( $unserialized ) && $unserialized === $data && $is_serialized ) {
// Something was messed up.
return false;
}
return $unserialized;
} catch ( Exception $e ) {
return false;
}
}
Changelog
| Version | Description |
|---|---|
| 4.13.3 | Introduced. |