| 1 | <?php
|
|---|
| 2 |
|
|---|
| 3 | public function get_multi( $keys ) {
|
|---|
| 4 | $values = $fetch_keys = $key_map = array();
|
|---|
| 5 | foreach ( $keys as $group => $group_keys ) {
|
|---|
| 6 | foreach ( $group_keys as $group_key ) {
|
|---|
| 7 | $key = $this->key( $group_key, $group );
|
|---|
| 8 |
|
|---|
| 9 | if ( isset( $this->cache[ $key ] ) && in_array( $group, $this->no_mc_groups ) ) {
|
|---|
| 10 | if ( is_object( $this->cache[ $key ] ) ) {
|
|---|
| 11 | $values[ $group ][ $group_key ] = clone $this->cache[ $key ];
|
|---|
| 12 | } else {
|
|---|
| 13 | $values[ $group ][ $group_key ] = $this->cache[ $key ];
|
|---|
| 14 | }
|
|---|
| 15 | } elseif ( in_array( $group, $this->no_mc_groups ) ) {
|
|---|
| 16 | $this->cache[ $key ] = $values[ $group ][ $group_key ] = false;
|
|---|
| 17 | } else {
|
|---|
| 18 | $fetch_keys[] = $key;
|
|---|
| 19 | $key_map[ $key ] = array(
|
|---|
| 20 | 'group' => $group,
|
|---|
| 21 | 'group_key' => $group_key,
|
|---|
| 22 | );
|
|---|
| 23 | }
|
|---|
| 24 | }
|
|---|
| 25 | }
|
|---|
| 26 |
|
|---|
| 27 | $values = array();
|
|---|
| 28 |
|
|---|
| 29 | if ( $fetch_keys ) {
|
|---|
| 30 | $fetched = apc_fetch( $fetch_keys );
|
|---|
| 31 |
|
|---|
| 32 | foreach ( $fetch_keys as $fetch_key ) {
|
|---|
| 33 | $group = $key_map[ $fetch_key ]['group'];
|
|---|
| 34 | $group_key = $key_map[ $fetch_key ]['group_key'];
|
|---|
| 35 |
|
|---|
| 36 | if ( isset( $fetched[ $fetch_key ] ) ) {
|
|---|
| 37 | $fetched_value = $fetched[ $fetch_key ];
|
|---|
| 38 | if ( is_object( $fetched_value ) && 'ArrayObject' == get_class( $fetched_value ) ) {
|
|---|
| 39 | $fetched_value = $fetched_value->getArrayCopy();
|
|---|
| 40 | }
|
|---|
| 41 |
|
|---|
| 42 | if ( null === $fetched_value ) {
|
|---|
| 43 | $fetched_value = false;
|
|---|
| 44 | }
|
|---|
| 45 |
|
|---|
| 46 | $this->cache[ $key ] = ( is_object( $fetched_value ) ) ? clone $fetched_value : $fetched_value;
|
|---|
| 47 | $values[ $group ][ $group_key ] = $this->cache[ $key ];
|
|---|
| 48 |
|
|---|
| 49 | } else {
|
|---|
| 50 | $this->cache[ $key ] = false;
|
|---|
| 51 | $values[ $group ][ $group_key ] = false;
|
|---|
| 52 | }
|
|---|
| 53 | }
|
|---|
| 54 | }
|
|---|
| 55 |
|
|---|
| 56 | @ ++$this->stats['get'];
|
|---|
| 57 |
|
|---|
| 58 | return $values;
|
|---|
| 59 | }
|
|---|