Apc.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. namespace ZN\Caching\Drivers;
  3. use ZN\Caching\CacheInterface;
  4. class ApcDriver implements CacheInterface
  5. {
  6. //----------------------------------------------------------------------------------------------------
  7. //
  8. // Yazar : Ozan UYKUN <ozanbote@windowslive.com> | <ozanbote@gmail.com>
  9. // Site : www.zntr.net
  10. // Lisans : The MIT License
  11. // Telif Hakkı: Copyright (c) 2012-2016, zntr.net
  12. //
  13. //----------------------------------------------------------------------------------------------------
  14. public function __construct()
  15. {
  16. if( $this->isSupported() === false )
  17. {
  18. die(getErrorMessage('Cache', 'unsupported', 'Apc'));
  19. }
  20. }
  21. /******************************************************************************************
  22. * SELECT *
  23. *******************************************************************************************
  24. | Genel Kullanım: Önbelleğe alınmış nesneyi çağırmak için kullanılır. |
  25. | |
  26. | Parametreler: Tek parametresi vardır. |
  27. | 1. string var @key => Nesne anahtarı. |
  28. | |
  29. | Örnek Kullanım: ->get('nesne'); |
  30. | |
  31. ******************************************************************************************/
  32. public function select($key = '')
  33. {
  34. $success = false;
  35. $data = apc_fetch($key, $success);
  36. if( $success === true )
  37. {
  38. return ( is_array($data) )
  39. ? unserialize($data[0])
  40. : $data;
  41. }
  42. return false;
  43. }
  44. /******************************************************************************************
  45. * INSERT *
  46. *******************************************************************************************
  47. | Genel Kullanım: Ön bellekte değişken saklamak için kullanılır. |
  48. | |
  49. | Parametreler: 4 parametresi vardır. |
  50. | 1. string var @key => Nesne anahtarı. |
  51. | 2. variable var @var => Nesne. |
  52. | 3. numeric var @time => Saklanacağı zaman. |
  53. | 4. mixed var @compressed => Sıkıştırma. |
  54. | |
  55. | Örnek Kullanım: ->get('nesne'); |
  56. | |
  57. ******************************************************************************************/
  58. public function insert($key = '', $var = '', $time = 60, $compressed = false)
  59. {
  60. $time = (int)$time;
  61. return apc_store
  62. (
  63. $key,
  64. $compressed === true ? $var : [serialize($var), time(), $time],
  65. $time
  66. );
  67. }
  68. /******************************************************************************************
  69. * DELETE *
  70. *******************************************************************************************
  71. | Genel Kullanım: Ön bellekten nesneyi silmek için kullanılır. |
  72. | |
  73. | Parametreler: Tek parametresi vardır. |
  74. | 1. string var @key => Nesne anahtarı. |
  75. | |
  76. | Örnek Kullanım: ->delete('nesne'); |
  77. | |
  78. ******************************************************************************************/
  79. public function delete($key = '')
  80. {
  81. return apc_delete($key);
  82. }
  83. /******************************************************************************************
  84. * INCREMENT *
  85. *******************************************************************************************
  86. | Genel Kullanım: Nesnenin değerini artımak için kullanılır. |
  87. | |
  88. | Parametreler: 2 parametresi vardır. |
  89. | 1. string var @key => Nesne anahtarı. |
  90. | 2. numeric var @increment => Artırım miktarı. |
  91. | |
  92. | Örnek Kullanım: ->increment('nesne', 1); |
  93. | |
  94. ******************************************************************************************/
  95. public function increment($key = '', $increment = 1)
  96. {
  97. return apc_inc($key, $increment);
  98. }
  99. /******************************************************************************************
  100. * DECREMENT *
  101. *******************************************************************************************
  102. | Genel Kullanım: Nesnenin değerini azaltmak için kullanılır. |
  103. | |
  104. | Parametreler: 2 parametresi vardır. |
  105. | 1. string var @key => Nesne anahtarı. |
  106. | 2. numeric var @decrement => Azaltım miktarı. |
  107. | |
  108. | Örnek Kullanım: ->decrement('nesne', 1); |
  109. | |
  110. ******************************************************************************************/
  111. public function decrement($key = '', $decrement = 1)
  112. {
  113. return apc_dec($key, $decrement);
  114. }
  115. /******************************************************************************************
  116. * CLEAN *
  117. *******************************************************************************************
  118. | Genel Kullanım: Tüm önbelleği silmek için kullanılır. |
  119. | |
  120. ******************************************************************************************/
  121. public function clean()
  122. {
  123. return apc_clear_cache('user');
  124. }
  125. /******************************************************************************************
  126. * INFO *
  127. *******************************************************************************************
  128. | Genel Kullanım: Ön bellekleme hakkında bilgi edinmek için kullanılır. |
  129. | |
  130. | Parametreler: Tek parametresi vardır. |
  131. | 1. string var @type => Bilgi alınacak kullanıcı türü. |
  132. | |
  133. | Örnek Kullanım: ->info('user'); |
  134. | |
  135. ******************************************************************************************/
  136. public function info($type = NULL)
  137. {
  138. return apc_cache_info($type);
  139. }
  140. /******************************************************************************************
  141. * GET METADATA *
  142. *******************************************************************************************
  143. | Genel Kullanım: Ön bellekteki nesne hakkında bilgi almak için kullanılır. |
  144. | |
  145. | Parametreler: Tek parametresi vardır. |
  146. | 1. string var @key => Bilgi alınacak nesne. |
  147. | |
  148. | Örnek Kullanım: ->get_metadata('nesne'); |
  149. | |
  150. ******************************************************************************************/
  151. public function getMetaData($key = '')
  152. {
  153. $success = false;
  154. $stored = apc_fetch($key, $success);
  155. if( $success === false || count($stored) !== 3 )
  156. {
  157. return false;
  158. }
  159. list($data, $time, $expire) = $stored;
  160. return array
  161. (
  162. 'expire' => $time + $expire,
  163. 'mtime' => $time,
  164. 'data' => unserialize($data)
  165. );
  166. }
  167. /******************************************************************************************
  168. * IS SUPPORTED *
  169. *******************************************************************************************
  170. | Genel Kullanım: Sürücünün desteklenip desklenmediğini öğrenmek için kullanılır. |
  171. | |
  172. ******************************************************************************************/
  173. public function isSupported()
  174. {
  175. if( ! extension_loaded('apc') || ! ini_get('apc.enabled') )
  176. {
  177. return \Errors::set('Cache', 'unsupported', 'Apc');
  178. }
  179. return true;
  180. }
  181. }