| 1: | <?php |
| 2: | |
| 3: | namespace nightmare\session\storage; |
| 4: | |
| 5: | use SessionHandlerInterface; |
| 6: | use ReturnTypeWillChange; |
| 7: | |
| 8: | class apcu implements SessionHandlerInterface |
| 9: | { |
| 10: | private string $prefix; |
| 11: | private int $ttl; |
| 12: | |
| 13: | public function __construct(string $prefix = 'sess_', int $ttl = 86400) |
| 14: | { |
| 15: | $this->prefix = $prefix; |
| 16: | $this->ttl = $ttl; |
| 17: | } |
| 18: | |
| 19: | #[ReturnTypeWillChange] |
| 20: | public function close() |
| 21: | { |
| 22: | return true; |
| 23: | } |
| 24: | |
| 25: | #[ReturnTypeWillChange] |
| 26: | public function destroy($id) |
| 27: | { |
| 28: | $key = $this->prefix . $id; |
| 29: | return apcu_delete($key); |
| 30: | } |
| 31: | |
| 32: | #[ReturnTypeWillChange] |
| 33: | public function gc($max_lifetime) |
| 34: | { |
| 35: | return 1; |
| 36: | } |
| 37: | |
| 38: | #[ReturnTypeWillChange] |
| 39: | public function open($path, $name) |
| 40: | { |
| 41: | return true; |
| 42: | } |
| 43: | |
| 44: | #[ReturnTypeWillChange] |
| 45: | public function read($id) |
| 46: | { |
| 47: | $key = $this->prefix . $id; |
| 48: | return apcu_exists($key) ? apcu_fetch($key) : ''; |
| 49: | } |
| 50: | |
| 51: | #[ReturnTypeWillChange] |
| 52: | public function write($id, $data) |
| 53: | { |
| 54: | $key = $this->prefix . $id; |
| 55: | return apcu_store($key, $data, $this->ttl); |
| 56: | } |
| 57: | } |