<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gevork&#039;s Blog &#187; Кешинг</title>
	<atom:link href="http://gevork.ru/tags/keshing/feed/" rel="self" type="application/rss+xml" />
	<link>http://gevork.ru</link>
	<description>YAB of Crazy Akhalkalaki Guy</description>
	<lastBuildDate>Wed, 25 Jan 2012 21:29:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Правильный Кешинг для CodeIgniter</title>
		<link>http://gevork.ru/2010/01/25/pravilnyj-keshing-dlya-codeigniter/</link>
		<comments>http://gevork.ru/2010/01/25/pravilnyj-keshing-dlya-codeigniter/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 17:37:49 +0000</pubDate>
		<dc:creator>Gevork</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[EAccelerator]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[XCache]]></category>
		<category><![CDATA[Кешинг]]></category>

		<guid isPermaLink="false">http://gevork.ru/?p=70</guid>
		<description><![CDATA[Привет&#8230; Тебе наверное понадобился правильный или частичний Кешинг для CI?Ну  Скажем вам надо частично скешировать ваш код для далнейших действий. Тогда не ломайте голову!. Качаем сначала KhCache (http://codeigniter.com/forums/viewthread/69843/) от  Khaosа. 1. Инсталл Кидаем его в папку /application/libraries/ И начинаем юзать. Если захотите переписать дефолтовые значения , те параметры библиотеки, то в папке /application/config создаем Khaos.php [...]]]></description>
			<content:encoded><![CDATA[<p>Привет&#8230; Тебе наверное понадобился правильный или частичний Кешинг для CI?Ну  Скажем вам надо частично скешировать ваш код для далнейших действий. Тогда не ломайте голову!.</p>
<p>Качаем сначала KhCache (<a href="http://codeigniter.com/forums/viewthread/69843/">http://codeigniter.com/forums/viewthread/69843/</a>) от  Khaosа.</p>
<pre>
<h2 id="2-Anwendung">1. Инсталл</h2>
</pre>
<p>Кидаем его в папку /application/libraries/</p>
<p>И начинаем юзать.</p>
<p>Если захотите переписать дефолтовые значения , те параметры библиотеки, то в папке /application/config создаем Khaos.php</p>
<p>И в нем пишем</p>
<pre>$config['cache'] = array('container' =&gt; 'File',
                         'ttl'       =&gt; 3600,
                         'File'      =&gt; array('store'           =&gt; BASEPATH.'cache/',
                                              'auto_clean'      =&gt; 10,
                                              'auto_clean_life' =&gt; 3600,
                                              'auto_clean_all'  =&gt; false));

Все думаю понятно. Если захоите вместо контейнера File  использовать скажем XCache Надо немножко помудить
с библиотекой

А в конфиге Написать так например

<code><span style="color: #000000;"> <span style="color: #0000bb;">$config[</span><span style="color: #dd0000;">'cache'</span><span style="color: #0000bb;">] </span><span style="color: #007700;">= array(</span><span style="color: #dd0000;">'container' </span><span style="color: #007700;">=&gt; </span><span style="color: #dd0000;">'APC'</span><span style="color: #007700;">); </span> 

Для чего отвечают отдельные ключи в массиве?</span> </code>

<em>auto_clean</em> - By default there is a 1 in 10 chance of the cache dir being cleaned, set to false to disable.
 <em>auto_clean_life</em> - Files older than this will be removed.
 <em>auto_clean_all</em> - By default only cache files prefixed with khcache_ are removed set to true to have khcache clean the entire directory
<h2 id="2-Anwendung">2. Использование<a href="http://wiki.codeigniter.ch/wiki/ci-wiki/Partielles_Caching_mit_KhCache#2-Anwendung"></a></h2>

Для того чтоб использовать
<ul>
<li><em>$this-&gt;khcache-&gt;generatekey():</em> Делает Идентификатор Кеша чтоб потом мы смогли достать его.</li>
<li><em>$this-&gt;khcache-&gt;store($key, $data, $ttl):</em> Сохраняет  ($data) под идентификатром ($key) на время $ttl секунд  в Кеш.</li>
<li><em>$this-&gt;khcache-&gt;call($func, $args, $ttl):</em> Делает функцию  ($func) с аргументами ($args, Typ: Array) и сохраняет  ответ на $ttl Секунд в кеш.</li>
<li><em>$this-&gt;khcache-&gt;fetch($key):</em>Читает элемент информации, который под ключом $key спрятан в кеше.</li>
<li><em>$this-&gt;khcache-&gt;delete($key):</em> Удаляет элемент информации под ключом $key из кеша.</li>
<li><em>$this-&gt;khcache-&gt;delete_all($key):</em> Удаляет все элементы из Кеша.</li>
<li><em>$this-&gt;khcache-&gt;get_hits():</em> Дает все успешные вызовы функции кеша  (Benchmarking).</li>
<li><em>$this-&gt;khcache-&gt;get_misses():</em> Дает количество безуспешных вызовов  (Benchmarking).</li>
</ul>

Надеюсь Понятно перевел.
<h2 id="5-Datencontainer-PlugIns">3. Плагины Контейнеров<a href="http://wiki.codeigniter.ch/wiki/ci-wiki/Partielles_Caching_mit_KhCache#5-Datencontainer-PlugIns">¶</a></h2>

Если ты  XCache как контейнер хочешь юзать, то введи след код в конце библиотекы
<pre><code><span> 1</span> <span><span>/</span><span>**
<span> 2</span> * Khaos :: KhCache :: XCache
<span> 3</span> *
<span> 4</span> * Wraps the XCache extension so it can be used
<span> 5</span> * as an KhCache Container.
<span> 6</span> *
<span> 7</span> *</span><span>/</span></span>
<span> 8</span> <span>class</span> <span>KH_Cache_XCache</span>
<span> 9</span> {
<span><strong>10</strong></span>     <span><span>/</span><span>**
<span>11</span>      * Constructor
<span>12</span>      *
<span>13</span>      * @param array $options   Container Options
<span>14</span>      *
<span>15</span>      * @return KH_Cache_XCache
<span>16</span>      *</span><span>/</span></span>
<span>17</span>     function __construct(<span>$options</span>)
<span>18</span>     {
<span>19</span>         <span><span>/</span><span>/</span></span> <span>Ensure</span> <span>XCache</span> is available
<span><strong>20</strong></span>         <span>if</span> (!extension_loaded(<span><span>'</span><span>xcache</span><span>'</span></span>) || !ini_get(<span><span>'</span><span>xcache.cacher</span><span>'</span></span>) || ini_get(<span><span>'</span><span>xcache.var_size</span><span>'</span></span>) == <span>0</span>)
<span>21</span>          show_error(<span><span>'</span><span>Khaos :: Cache :: XCache - One or more of the required XCACHE functions
<span>22</span>            is unavailable.</span><span>'</span></span>);
<span>23</span>     }
<span>24</span>
<span>25</span>     <span><span>/</span><span>**
<span>26</span>      * Store Cache Item
<span>27</span>      *
<span>28</span>      * @param string $key
<span>29</span>      * @param mixed  $data
<span><strong>30</strong></span>      * @param int    $ttl
<span>31</span>      *
<span>32</span>      * @return bool
<span>33</span>      * @access public
<span>34</span>      *</span><span>/</span></span>
<span>35</span>     function Store(<span>$key</span>, <span>$data</span>, <span>$ttl</span>)
<span>36</span>     {
<span>37</span>         <span>return</span> xcache_set(<span>$key</span>, serialize(<span>$data</span>), <span>$ttl</span>);
<span>38</span>     }
<span>39</span>
<span><strong>40</strong></span>     <span><span>/</span><span>**
<span>41</span>      * Fetch Cache Item
<span>42</span>      *
<span>43</span>      * @param string $key
<span>44</span>      *
<span>45</span>      * @return mixed
<span>46</span>      * @access public
<span>47</span>      *</span><span>/</span></span>
<span>48</span>     function Fetch(<span>$key</span>)
<span>49</span>     {
<span><strong>50</strong></span>         <span>return</span> ((<span>$ret</span> = xcache_get(<span>$key</span>)) !== <span>false</span>)?unserialize(<span>$ret</span>)<span>:false</span>;
<span>51</span>     }
<span>52</span>
<span>53</span>     <span><span>/</span><span>**
<span>54</span>      * Delete Cache Item
<span>55</span>      *
<span>56</span>      * @param string $key
<span>57</span>      *
<span>58</span>      * @return bool
<span>59</span>      * @access public
<span><strong>60</strong></span>      *</span><span>/</span></span>
<span>61</span>     function Delete(<span>$key</span>)
<span>62</span>     {
<span>63</span>         <span>return</span> xcache_unset(<span>$key</span>);
<span>64</span>     }
<span>65</span>
<span>66</span>     <span><span>/</span><span>**
<span>67</span>      * Delete All Cache Items
<span>68</span>      *
<span>69</span>      * @return bool
<span><strong>70</strong></span>      * @access public
<span>71</span>      *</span><span>/</span></span>
<span>72</span>     function DeleteAll()
<span>73</span>     {
<span>74</span>         <span>$xcache_auth</span> = ini_get(<span><span>'</span><span>xcache.admin.enable_auth</span><span>'</span></span>);
<span>75</span>         ini_set(<span><span>'</span><span>xcache.admin.enable_auth</span><span>'</span></span>, <span>0</span>);
<span>76</span>         <span>for</span> (<span>$v</span>=<span>0</span>; ini_get(<span><span>'</span><span>xcache.var_count</span><span>'</span></span>); <span>$v</span>++)
<span>77</span>             xcache_clear_cache(<span>XC_TYPE_VAR</span>, <span>$v</span>);
<span>78</span>         ini_set(<span><span>'</span><span>xcache.admin.enable_auth</span><span>'</span></span>, <span>$xcache_auth</span>);
<span>79</span>         <span>return</span> <span>true</span>;
<span><strong>80</strong></span>     }
<span>81</span> }
</code></pre>
<p>Для eAccelerator введи это (ВНИМАНИЕ: delete_all не будет поддержан):</p>
<pre><code><span> 1</span> <span><span>/</span><span>/</span></span> ------------------------------------------------------------------------
<span> 2</span>
<span> 3</span> <span><span>/</span><span>**
<span> 4</span> * Khaos :: KhCache :: Eaccelerator
<span> 5</span> *
<span> 6</span> * Wraps the Eaccelerator extension so it can be used
<span> 7</span> * as an KhCache Container.
<span> 8</span> *
<span> 9</span> *</span><span>/</span></span>
<span><strong>10</strong></span> <span>class</span> <span>KH_Cache_Eaccelerator</span>
<span>11</span> {
<span>12</span>     <span><span>/</span><span>**
<span>13</span>      * Constructor
<span>14</span>      *
<span>15</span>      * @param array $options   Container Options
<span>16</span>      *
<span>17</span>      * @return KH_Cache_Eaccelerator
<span>18</span>      *</span><span>/</span></span>
<span>19</span>     function KH_Cache_Eaccelerator(<span>$options</span>)
<span><strong>20</strong></span>     {
<span>21</span>         <span><span>/</span><span>/</span></span> <span>Ensure</span> <span>Eaccelerator</span> is available
<span>22</span>         <span>if</span> (!function_exists(<span><span>'</span><span>eaccelerator_put</span><span>'</span></span>)
<span>23</span>          || !function_exists(<span><span>'</span><span>eaccelerator_get</span><span>'</span></span>)
<span>24</span>          || !function_exists(<span><span>'</span><span>eaccelerator_rm</span><span>'</span></span>))
<span>25</span>          show_error(<span><span>'</span><span>Khaos :: Cache :: Eaccelerator - One or more of the required Eaccelerator functions
<span>26</span>            is unavailable.</span><span>'</span></span>);
<span>27</span>     }
<span>28</span>
<span>29</span>     <span><span>/</span><span>**
<span><strong>30</strong></span>      * Store Cache Item
<span>31</span>      *
<span>32</span>      * @param string $key
<span>33</span>      * @param mixed  $data
<span>34</span>      * @param int    $ttl
<span>35</span>      *
<span>36</span>      * @return bool
<span>37</span>      * @access public
<span>38</span>      *</span><span>/</span></span>
<span>39</span>     function Store(<span>$key</span>, <span>$data</span>, <span>$ttl</span>)
<span><strong>40</strong></span>     {
<span>41</span>         <span>return</span> eaccelerator_put(<span>$key</span>, serialize(<span>$data</span>), <span>$ttl</span>);
<span>42</span>     }
<span>43</span>
<span>44</span>     <span><span>/</span><span>**
<span>45</span>      * Fetch Cache Item
<span>46</span>      *
<span>47</span>      * @param string $key
<span>48</span>      *
<span>49</span>      * @return mixed
<span><strong>50</strong></span>      * @access public
<span>51</span>      *</span><span>/</span></span>
<span>52</span>     function Fetch(<span>$key</span>)
<span>53</span>     {
<span>54</span>         <span>return</span> ((<span>$ret</span> = eaccelerator_get(<span>$key</span>)) !== <span>NULL</span>) ? unserialize(<span>$ret</span>) : <span>FALSE</span>;
<span>55</span>     }
<span>56</span>
<span>57</span>     <span><span>/</span><span>**
<span>58</span>      * Delete Cache Item
<span>59</span>      *
<span><strong>60</strong></span>      * @param string $key
<span>61</span>      *
<span>62</span>      * @return bool
<span>63</span>      * @access public
<span>64</span>      *</span><span>/</span></span>
<span>65</span>     function Delete(<span>$key</span>)
<span>66</span>     {
<span>67</span>         <span>return</span> eaccelerator_rm(<span>$key</span>);
<span>68</span>     }
<span>69</span>
<span><strong>70</strong></span>     <span><span>/</span><span>**
<span>71</span>      * Delete All Cache Items
<span>72</span>      *
<span>73</span>      * @return bool
<span>74</span>      * @access public
<span>75</span>      *</span><span>/</span></span>
<span>76</span>     function DeleteAll()
<span>77</span>     {
<span>78</span>         <span><span>/</span><span>/</span></span><span>return</span> apc_clear_cache(<span><span>'</span><span>user</span><span>'</span></span>);
<span>79</span>         <span><span>/</span><span>/</span></span><span>Not</span> available <span>in</span> eaccelerator
<span><strong>80</strong></span>         <span>return</span> <span>FALSE</span>;
<span>81</span>     }
<span>82</span> }
</code></pre>
<p>Ну все если че, и ты по немецки понимаешь то плиз читай вот это: <a href="http://wiki.codeigniter.ch/wiki/ci-wiki/Partielles_Caching_mit_KhCache">http://wiki.codeigniter.ch/wiki/ci-wiki/Partielles_Caching_mit_KhCache</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://gevork.ru/2010/01/25/pravilnyj-keshing-dlya-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

