Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
syncEnrollments
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Yeray Santana Hualde
syncEnrollments
Commits
a892b85e
Commit
a892b85e
authored
Apr 27, 2012
by
Taylor Otwell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added new Sectionable interface to allow cache drivers to expose "namespace" type functionality.
parent
9057c60a
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
227 additions
and
2 deletions
+227
-2
memcached.php
laravel/cache/drivers/memcached.php
+153
-2
sectionable.php
laravel/cache/drivers/sectionable.php
+74
-0
No files found.
laravel/cache/drivers/memcached.php
View file @
a892b85e
<?php
namespace
Laravel\Cache\Drivers
;
<?php
namespace
Laravel\Cache\Drivers
;
class
Memcached
extends
Driver
{
class
Memcached
extends
Driver
implements
Sectionable
{
/**
/**
* The Memcache instance.
* The Memcache instance.
*
*
* @var Memcached
* @var Memcached
*/
*/
p
rotected
$memcache
;
p
ublic
$memcache
;
/**
/**
* The cache key from the cache configuration file.
* The cache key from the cache configuration file.
...
@@ -53,6 +53,19 @@ class Memcached extends Driver {
...
@@ -53,6 +53,19 @@ class Memcached extends Driver {
}
}
}
}
/**
* Retrieve a sectioned item from the cache driver.
*
* @param string $section
* @param string $key
* @param mixed $default
* @return mixed
*/
public
function
get_from_section
(
$section
,
$key
,
$default
=
null
)
{
return
$this
->
get
(
$this
->
section_item_key
(
$section
,
$key
),
$default
);
}
/**
/**
* Write an item to the cache for a given number of minutes.
* Write an item to the cache for a given number of minutes.
*
*
...
@@ -71,6 +84,20 @@ class Memcached extends Driver {
...
@@ -71,6 +84,20 @@ class Memcached extends Driver {
$this
->
memcache
->
set
(
$this
->
key
.
$key
,
$value
,
$minutes
*
60
);
$this
->
memcache
->
set
(
$this
->
key
.
$key
,
$value
,
$minutes
*
60
);
}
}
/**
* Write a sectioned item to the cache.
*
* @param string $section
* @param string $key
* @param mixed $value
* @param int $minutes
* @return void
*/
public
function
put_in_section
(
$section
,
$key
,
$value
,
$minutes
)
{
$this
->
put
(
$this
->
section_item_key
(
$section
,
$key
),
$value
,
$minutes
);
}
/**
/**
* Write an item to the cache that lasts forever.
* Write an item to the cache that lasts forever.
*
*
...
@@ -83,6 +110,48 @@ class Memcached extends Driver {
...
@@ -83,6 +110,48 @@ class Memcached extends Driver {
return
$this
->
put
(
$key
,
$value
,
0
);
return
$this
->
put
(
$key
,
$value
,
0
);
}
}
/**
* Write a sectioned item to the cache that lasts forever.
*
* @param string $section
* @param string $key
* @param mixed $value
* @return void
*/
public
function
forever_in_section
(
$section
,
$key
,
$value
)
{
return
$this
->
forever
(
$this
->
section_item_key
(
$section
,
$key
),
$value
);
}
/**
* Get a sectioned item from the cache, or cache and return the default value.
*
* @param string $section
* @param string $key
* @param mixed $default
* @param int $minutes
* @return mixed
*/
public
function
remember_in_section
(
$section
,
$key
,
$default
,
$minutes
,
$function
=
'put'
)
{
$key
=
$this
->
section_item_key
(
$section
,
$key
);
return
$this
->
remember
(
$key
,
$default
,
$minutes
,
$function
);
}
/**
* Get a sectioned item from the cache, or cache the default value forever.
*
* @param string $section
* @param string $key
* @param mixed $default
* @return mixed
*/
public
function
sear_in_section
(
$section
,
$key
,
$default
)
{
return
$this
->
sear
(
$this
->
section_item_key
(
$section
,
$key
),
$default
);
}
/**
/**
* Delete an item from the cache.
* Delete an item from the cache.
*
*
...
@@ -94,4 +163,86 @@ class Memcached extends Driver {
...
@@ -94,4 +163,86 @@ class Memcached extends Driver {
$this
->
memcache
->
delete
(
$this
->
key
.
$key
);
$this
->
memcache
->
delete
(
$this
->
key
.
$key
);
}
}
/**
* Delete a sectioned item from the cache.
*
* @param string $section
* @param string $key
* @return void
*/
public
function
forget_in_section
(
$section
,
$key
)
{
return
$this
->
forget
(
$this
->
section_item_key
(
$section
,
$key
));
}
/**
* Delete an entire section from the cache.
*
* @param string $section
* @return int|bool
*/
public
function
forget_section
(
$section
)
{
return
$this
->
memcache
->
increment
(
$this
->
key
.
$this
->
section_key
(
$section
));
}
/**
* Get the current section ID for a given section.
*
* @param string $section
* @return int
*/
protected
function
section_id
(
$section
)
{
return
$this
->
sear
(
$this
->
section_key
(
$section
),
function
()
{
return
rand
(
1
,
10000
);
});
}
/**
* Get a section key name for a given section.
*
* @param string $section
* @return string
*/
protected
function
section_key
(
$section
)
{
return
$section
.
'_section_key'
;
}
/**
* Get a section item key for a given section and key.
*
* @param string $section
* @param string $key
* @return string
*/
protected
function
section_item_key
(
$section
,
$key
)
{
return
$section
.
'#'
.
$this
->
section_id
(
$section
)
.
'#'
.
$key
;
}
/**
* Determine if a key is sectioned.
*
* @param string $key
* @return bool
*/
protected
function
sectioned
(
$key
)
{
return
str_contains
(
$key
,
'::'
);
}
/**
* Get the section and key from a sectioned key.
*
* @param string $key
* @return array
*/
protected
function
parse
(
$key
)
{
return
explode
(
'::'
,
$key
,
2
);
}
}
}
\ No newline at end of file
laravel/cache/drivers/sectionable.php
0 → 100644
View file @
a892b85e
<?php
namespace
Laravel\Cache\Drivers
;
interface
Sectionable
{
/**
* Retrieve a sectioned item from the cache driver.
*
* @param string $section
* @param string $key
* @param mixed $default
* @return mixed
*/
public
function
get_from_section
(
$section
,
$key
,
$default
=
null
);
/**
* Write a sectioned item to the cache.
*
* @param string $section
* @param string $key
* @param mixed $value
* @param int $minutes
* @return void
*/
public
function
put_in_section
(
$section
,
$key
,
$value
,
$minutes
);
/**
* Write a sectioned item to the cache that lasts forever.
*
* @param string $section
* @param string $key
* @param mixed $value
* @return void
*/
public
function
forever_in_section
(
$section
,
$key
,
$value
);
/**
* Get a sectioned item from the cache, or cache and return the default value.
*
* @param string $section
* @param string $key
* @param mixed $default
* @param int $minutes
* @return mixed
*/
public
function
remember_in_section
(
$section
,
$key
,
$default
,
$minutes
,
$function
=
'put'
);
/**
* Get a sectioned item from the cache, or cache the default value forever.
*
* @param string $section
* @param string $key
* @param mixed $default
* @return mixed
*/
public
function
sear_in_section
(
$section
,
$key
,
$default
);
/**
* Delete a sectioned item from the cache.
*
* @param string $section
* @param string $key
* @return void
*/
public
function
forget_in_section
(
$section
,
$key
);
/**
* Delete an entire section from the cache.
*
* @param string $section
* @return int|bool
*/
public
function
forget_section
(
$section
);
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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