Wincache.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. namespace ZN\Caching\Drivers;
  3. use ZN\Caching\CacheInterface;
  4. class WincacheDriver 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', 'Wincache'));
  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 = wincache_ucache_get($key, $success);
  36. return ( $success )
  37. ? $data
  38. : false;
  39. }
  40. /******************************************************************************************
  41. * INSERT *
  42. *******************************************************************************************
  43. | Genel Kullanım: Ön bellekte değişken saklamak için kullanılır. |
  44. | |
  45. | Parametreler: 4 parametresi vardır. |
  46. | 1. string var @key => Nesne anahtarı. |
  47. | 2. variable var @var => Nesne. |
  48. | 3. numeric var @time => Saklanacağı zaman. |
  49. | 4. mixed var @compressed => Sıkıştırma. |
  50. | |
  51. | Örnek Kullanım: ->get('nesne'); |
  52. | |
  53. ******************************************************************************************/
  54. public function insert($key = '', $var = '', $time = 60, $expressed = false)
  55. {
  56. return wincache_ucache_set($key, $var, $time);
  57. }
  58. /******************************************************************************************
  59. * DELETE *
  60. *******************************************************************************************
  61. | Genel Kullanım: Ön bellekten nesneyi silmek için kullanılır. |
  62. | |
  63. | Parametreler: Tek parametresi vardır. |
  64. | 1. string var @key => Nesne anahtarı. |
  65. | |
  66. | Örnek Kullanım: ->delete('nesne'); |
  67. | |
  68. ******************************************************************************************/
  69. public function delete($key = '')
  70. {
  71. return wincache_ucache_delete($key);
  72. }
  73. /******************************************************************************************
  74. * INCREMENT *
  75. *******************************************************************************************
  76. | Genel Kullanım: Nesnenin değerini artımak için kullanılır. |
  77. | |
  78. | Parametreler: 2 parametresi vardır. |
  79. | 1. string var @key => Nesne anahtarı. |
  80. | 2. numeric var @increment => Artırım miktarı. |
  81. | |
  82. | Örnek Kullanım: ->increment('nesne', 1); |
  83. | |
  84. ******************************************************************************************/
  85. public function increment($key = '', $increment = 1)
  86. {
  87. $success = false;
  88. $value = wincache_ucache_inc($key, $increment, $success);
  89. return ( $success === true )
  90. ? $value
  91. : false;
  92. }
  93. /******************************************************************************************
  94. * DECREMENT *
  95. *******************************************************************************************
  96. | Genel Kullanım: Nesnenin değerini azaltmak için kullanılır. |
  97. | |
  98. | Parametreler: 2 parametresi vardır. |
  99. | 1. string var @key => Nesne anahtarı. |
  100. | 2. numeric var @decrement => Azaltım miktarı. |
  101. | |
  102. | Örnek Kullanım: ->decrement('nesne', 1); |
  103. | |
  104. ******************************************************************************************/
  105. public function decrement($key = '', $decrement = 1)
  106. {
  107. $success = false;
  108. $value = wincache_ucache_dec($key, $decrement, $success);
  109. return ( $success === true )
  110. ? $value
  111. : false;
  112. }
  113. /******************************************************************************************
  114. * CLEAN *
  115. *******************************************************************************************
  116. | Genel Kullanım: Tüm önbelleği silmek için kullanılır. |
  117. | |
  118. ******************************************************************************************/
  119. public function clean()
  120. {
  121. return wincache_ucache_clear();
  122. }
  123. /******************************************************************************************
  124. * INFO *
  125. *******************************************************************************************
  126. | Genel Kullanım: Ön bellekleme hakkında bilgi edinmek için kullanılır. |
  127. | |
  128. ******************************************************************************************/
  129. public function info($type = NULL)
  130. {
  131. return wincache_ucache_info(true);
  132. }
  133. /******************************************************************************************
  134. * GET METADATA *
  135. *******************************************************************************************
  136. | Genel Kullanım: Ön bellekteki nesne hakkında bilgi almak için kullanılır. |
  137. | |
  138. | Parametreler: Tek parametresi vardır. |
  139. | 1. string var @key => Bilgi alınacak nesne. |
  140. | |
  141. | Örnek Kullanım: ->get_metadata('nesne'); |
  142. | |
  143. ******************************************************************************************/
  144. public function getMetaData($key = '')
  145. {
  146. if( $stored = wincache_ucache_info(false, $key) )
  147. {
  148. $age = $stored['ucache_entries'][1]['age_seconds'];
  149. $ttl = $stored['ucache_entries'][1]['ttl_seconds'];
  150. $hitcount = $stored['ucache_entries'][1]['hitcount'];
  151. return array
  152. (
  153. 'expire' => $ttl - $age,
  154. 'hitcount' => $hitcount,
  155. 'age' => $age,
  156. 'ttl' => $ttl
  157. );
  158. }
  159. return false;
  160. }
  161. /******************************************************************************************
  162. * IS SUPPORTED *
  163. *******************************************************************************************
  164. | Genel Kullanım: Sürücünün desteklenip desklenmediğini öğrenmek için kullanılır. |
  165. | |
  166. ******************************************************************************************/
  167. public function isSupported()
  168. {
  169. if ( ! extension_loaded('wincache') || ! ini_get('wincache.ucenabled') )
  170. {
  171. return \Errors::set('Cache', 'unsupported', 'Wincache');
  172. }
  173. return true;
  174. }
  175. }