Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Plugins bot
moodle-plugins-snapshots
Commits
c5bd22b1
Commit
c5bd22b1
authored
Jan 18, 2017
by
Eloy Lafuente
Browse files
Merge branch 'MDL-57570-master' of
https://github.com/mwehr/moodle
parents
36102596
7ca11616
Changes
1
Hide whitespace changes
Inline
Side-by-side
cache/stores/static/lib.php
View file @
c5bd22b1
...
...
@@ -117,12 +117,19 @@ class cachestore_static extends static_data_store implements cache_is_key_aware,
* @var bool
*/
protected
$simpledata
=
false
;
/**
* The number of items currently being stored.
* @var int
*/
protected
$storecount
=
0
;
/**
* igbinary extension available.
* @var bool
*/
protected
$igbinaryfound
=
false
;
/**
* Constructs the store instance.
*
...
...
@@ -203,6 +210,7 @@ class cachestore_static extends static_data_store implements cache_is_key_aware,
$this
->
store
=
&
self
::
register_store_id
(
$this
->
storeid
);
$maxsize
=
$definition
->
get_maxsize
();
$this
->
simpledata
=
$definition
->
uses_simple_data
();
$this
->
igbinaryfound
=
extension_loaded
(
'igbinary'
);
if
(
$maxsize
!==
null
)
{
// Must be a positive int.
$this
->
maxsize
=
abs
((
int
)
$maxsize
);
...
...
@@ -219,6 +227,41 @@ class cachestore_static extends static_data_store implements cache_is_key_aware,
return
(
is_array
(
$this
->
store
));
}
/**
* Uses igbinary serializer if igbinary extension is loaded.
* Fallback to PHP serializer.
*
* @param mixed $data
* The value to be serialized.
* @return string a string containing a byte-stream representation of
* value that can be stored anywhere.
*/
protected
function
serialize
(
$data
)
{
if
(
$this
->
igbinaryfound
)
{
return
igbinary_serialize
(
$data
);
}
else
{
return
serialize
(
$data
);
}
}
/**
* Uses igbinary unserializer if igbinary extension is loaded.
* Fallback to PHP unserializer.
*
* @param string $str
* The serialized string.
* @return mixed The converted value is returned, and can be a boolean,
* integer, float, string,
* array or object.
*/
protected
function
unserialize
(
$str
)
{
if
(
$this
->
igbinaryfound
)
{
return
igbinary_unserialize
(
$str
);
}
else
{
return
unserialize
(
$str
);
}
}
/**
* Retrieves an item from the cache store given its key.
*
...
...
@@ -233,7 +276,7 @@ class cachestore_static extends static_data_store implements cache_is_key_aware,
$key
=
$key
[
'key'
];
if
(
isset
(
$this
->
store
[
$key
]))
{
if
(
$this
->
store
[
$key
][
'serialized'
])
{
return
unserialize
(
$this
->
store
[
$key
][
'data'
]);
return
$this
->
unserialize
(
$this
->
store
[
$key
][
'data'
]);
}
else
{
return
$this
->
store
[
$key
][
'data'
];
}
...
...
@@ -261,7 +304,7 @@ class cachestore_static extends static_data_store implements cache_is_key_aware,
$return
[
$key
]
=
false
;
if
(
isset
(
$this
->
store
[
$key
]))
{
if
(
$this
->
store
[
$key
][
'serialized'
])
{
$return
[
$key
]
=
unserialize
(
$this
->
store
[
$key
][
'data'
]);
$return
[
$key
]
=
$this
->
unserialize
(
$this
->
store
[
$key
][
'data'
]);
}
else
{
$return
[
$key
]
=
$this
->
store
[
$key
][
'data'
];
}
...
...
@@ -292,7 +335,7 @@ class cachestore_static extends static_data_store implements cache_is_key_aware,
$this
->
store
[
$key
][
'data'
]
=
$data
;
$this
->
store
[
$key
][
'serialized'
]
=
false
;
}
else
{
$this
->
store
[
$key
][
'data'
]
=
serialize
(
$data
);
$this
->
store
[
$key
][
'data'
]
=
$this
->
serialize
(
$data
);
$this
->
store
[
$key
][
'serialized'
]
=
true
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment