Á¦4Àå Zend_Cache

¸ñÂ÷

4.1. µµÀÔ
4.2. ij½¬ÀÇ ±¸Á¶
4.2.1. Zend_Cache ÆÑÅ丮 ¸Þ¼Òµå
4.2.2. ·¹ÄÚµåÀÇ ÅÂ±× ºÙ¾î¶ó
4.2.3. ij½¬ÀÇ »èÁ¦
4.3. Zend_Cache ÀÇ ÇÁ·ÐÆ®¿£µå
4.3.1. Zend_Cache_Core
4.3.2. Zend_Cache_Frontend_Output
4.3.3. Zend_Cache_Frontend_Function
4.3.4. Zend_Cache_Frontend_Class
4.3.5. Zend_Cache_Frontend_File
4.3.6. Zend_Cache_Frontend_Page
4.4. Zend_Cache ÀÇ ¿¬±¸ ÃÖÁ¾ ´Ü°è
4.4.1. Zend_Cache_Backend_File
4.4.2. Zend_Cache_Backend_Sqlite
4.4.3. Zend_Cache_Backend_Memcached
4.4.4. Zend_Cache_Backend_Apc
4.4.5. Zend_Cache_Backend_ZendPlatform

4.1. µµÀÔ

Zend_Cache (Àº)´Â, ÀÓÀÇÀÇ µ¥ÀÌÅ͸¦ ij½¬Çϱâ À§ÇÑ ÀϹÝÀûÀÎ ¼ö¹ýÀ» Á¦°øÇÕ´Ï´Ù.

Zend Framework ¿¡ À־ÀÇ Ä³½¬ 󸮴 ÇÁ·ÐÆ®¿£µå·Î ÇàÇØÁ® ij½¬ ·¹ÄÚµåÀÇ º¸Á¸¿¡´Â ¿¬±¸ ÃÖÁ¾ ´Ü°èÀÇ ¾î´ðÅÍ (File,Sqlite,Memcache...) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.ID ¹× ű׸¦ »ç¿ëÇÑ À¯¿¬ÇÑ ±¸Á¶°¡ ÀÌ¿ëµÇ°í ÀÖ½À´Ï´Ù.À̰͵éÀ» »ç¿ëÇÏ´Â °ÍÀ¸·Î, ij½¬ µ¥ÀÌÅÍÀÇ ÀϺθ¸À» »èÁ¦ÇÑ´Ù (¡¸ÁöÁ¤ÇÑ Å±װ¡ ºÙ¿©Á® Àִ ij½¬ ·¹Äڵ带 ¸ðµÎ »èÁ¦ÇÑ´Ù¡¹ µî) ±×·¸´Ù°í ÇÑ °Íµµ °£´ÜÇÏ°Ô ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

ÀÌ ¸ðµâÀÇ Áß½ÉÀÌ µÇ´Â ºÎºÐ (Zend_Cache_Core) (Àº)´Â, Ç¥ÁØÀûÀ¸·Î À¯¿¬ÇÑ °ÍÀÌ µÇ°í ÀÖ½À´Ï´Ù. ¼³Á¤ º¯°æµµ °¡´ÉÇÕ´Ï´Ù.±×·¸Áö¸¸, ƯÁ¤ÀÇ ¸ñÀûÀ» À§Çؼ­´Â, º¸´Ù ÀûÀýÇÑ ½ÇÇà °á°ú¸¦ ¾ò±â À§ÇÑ ÇÁ·ÐÆ®¿£µå Zend_Cache_Core (À»)¸¦ È®ÀåÇÑ´Ù (¿¹¸¦ µé¾î Output,File,Function,Class µî) Àϵµ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

·Ê 4.1. Zend_Cache::factory() ¿¡ ÀÇÇÑ ÇÁ·ÐÆ®¿£µåÀÇ Ãëµæ

Zend_Cache::factory() (Àº)´Â, ÀûÀýÇÑ ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇØ ±×°ÍµéÀ» ¼­·Î ¿¬°á½Ãŵ´Ï´Ù. ÀÌ ÃÖÃÊÀÇ ¿¹¿¡¼­´Â, ÇÁ·ÐÆ®¿£µå¿¡ Core, ¿¬±¸ ÃÖÁ¾ ´Ü°è¿¡ File (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.


<?php
require_once 'Zend/Cache.php';

$frontendOptions = array(
   
'lifetime' => 7200// Ä³½¬ÀÇ À¯È¿±â°£À» 2 ½Ã°£À¸·Î ÇÕ´Ï´Ù
   
'automatic_serialization' => true
);

$backendOptions = array(
    
'cache_dir' => './tmp/' // Ä³½¬ ÆÄÀÏÀ» ¾²´Â µð·ºÅ丮
);

// Zend_Cache_Core ¿ÀºêÁ§Æ®¸¦ ÃëµæÇÕ´Ï´Ù
$cache Zend_Cache::factory('Core''File'$frontendOptions$backendOptions);

[ÁÖÀÇ] º¹¼öÀÇ ´Ü¾î·ÎºÎÅÍ µÇ´Â ÇÁ·ÐÆ®¿£µå³ª ¿¬±¸ ÃÖÁ¾ ´Ü°è¿¡ ´ëÇØ

'ZendPlatform' (¿Í)°ú °°ÀÌ º¹¼öÀÇ ´Ü¾î·ÎºÎÅÍ µÇ´Â ÇÁ·ÐÆ®¿£µå³ª ¿¬±¸ ÃÖÁ¾ ´Ü°èµµ ÀÖ½À´Ï´Ù. À̰ÍÀ» ÆÑÅ丮·Î ÁöÁ¤ÇÏ´Â °æ¿ì´Â, ´Ü¾îÀÇ »çÀÌ¿¡ ´Ü¶ôÁö¾î ¹®ÀÚ¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ´Ü¶ô ¹®Àڷμ­´Â ½ºÆäÀ̽º (' '), ÇÏÀÌÇ ('-') ȤÀº ÇǸ®¿Àµå ('.') ÇÏÁö¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

·Ê 4.2. µ¥ÀÌŸº£À̽º¿¡ÀÇ Äõ¸®ÀÇ °á°úÀÇ Ä³½¬

À̰ÍÀ¸·Î ÇÁ·ÐÆ®¿£µå¸¦ ¾òÀ» ¼ö ÀÖ¾ú½À´Ï´Ù.¸ðµç Á¾·ùÀÇ µ¥ÀÌÅ͸¦ º¸Á¸ÇÒ ¼ö ÀÖ½À´Ï´Ù (±× ¶§¹®¿¡(À§ÇØ), ½Ã¸®¾ó¶óÀÌÁ À¯È¿ÇÏ°Ô Çß½À´Ï´Ù).¿¹¸¦ µé¸é, ¸Å¿ì ½Ã°£ÀÌ °É¸®´Â µ¥ÀÌŸº£À̽º Äõ¸®ÀÇ °á°ú¸¦ ij½¬ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù.ÀÏ´Ü Ä³½¬ÇØ ¹ö¸®¸é, ±×¸®°í´Â µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÏ´Â ÇÊ¿äÇÔ ¾ø½À´Ï´Ù.ij½¬·ÎºÎÅÍ ÃëµæÇÑ ·¹Äڵ带 ¾È½Ã¸®¾ó¶óÀÌÁî ÇØ µ¥ÀÌÅ͸¦ ÃëµæÇϸé ÁÁ½À´Ï´Ù.


<?php
// $cache (Àº)´Â ¹æ±ÝÀüÀÇ ¿¹·Î ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù

// Ä³½¬°¡ ¹ú½á Á¸ÀçÇÒÁö¸¦ Á¶»çÇÕ´Ï´Ù
if(!$result $cache->load('myresult')) {

    
// Ä³½¬°¡ ¹ß°ßµÇÁö ¾Ê¾Ò½À´Ï´Ù.µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÕ´Ï´Ù

    
$db Zend_Db::factory( [...] );

    
$result $db->fetchAll('SELECT * FROM huge_table');

    
$cache->save($result'myresult');

} else {

    
// Ä³½¬°¡ ¹ß°ßµÇ¾ú½À´Ï´Ù! Å« ¼Ò¸®·Î ¿ÜĨ½Ã´Ù
    
echo "À̰ÍÀº ij½¬·ÎºÎÅÍÀÇ µ¥ÀÌÅÍÀÔ´Ï´Ù!nn";

}

print_r($result);

·Ê 4.3. Zend_Cache Ãâ·Â ÇÁ·ÐÆ®¿£µå¿¡ ÀÇÇÑ Ãâ·ÂÀÇ Ä³½¬

¿ì¼±, Ãâ·ÂÀ» ij½¬ÇÏ°í ½ÍÀº ºÎºÐÀ» ¾î¶°ÇÑ Á¶°Ç½Ä¿¡¼­ ¡¸¸¶Å© ¾÷¡¹ÇØ, ±× ÀüÈĸ¦ start() ¸Þ¼Òµå ¹× end() ¸Þ¼Òµå·Î µÑ·¯½Ô´Ï´Ù (À̰ÍÀº ÃÖÃÊÀÇ ¿¹¸¦ ´à¾Æ ÀÖ¾î ij½¬ ó¸®ÀÇ ±âº»ÀÌ µÇ´Â »ý°¢ÀÔ´Ï´Ù).

³»ºÎ¿¡¼­´Â, Åë»ó ´ë·Î¿¡ Ãâ·ÂÀ» ½Ç½ÃÇÕ´Ï´Ù.Ãâ·Â ³»¿ëÀº, end() ¸Þ¼Òµå¿¡ µµ´ÞÇÒ ¶§±îÁö Âß Ä³½¬µË´Ï´Ù.´ÙÀ½ ¹øÀÇ ½ÇÇà½Ã¿¡´Â, ÀÌ ¼½¼ÇÀÌ ÀÐ¾î ³¯¾Æ°¡ ±× ´ë½Å¿¡ ij½¬·ÎºÎÅÍ ÃëµæÇÑ µ¥ÀÌÅͰ¡ »ç¿ëµË´Ï´Ù (ij½¬ ·¹Äڵ尡 À¯È¿ÇÑ °ÍÀ¸·Î ÇÑÁ¤ÇÕ´Ï´Ù).


<?php
$frontendOptions 
= array(
   
'lifetime' => 30,                  // Ä³½¬ÀÇ À¯È¿±â°£Àº 30 ÃÊÀÔ´Ï´Ù
   
'automatic_serialization' => false  // À̰ÍÀº µðÆúƮġÀÔ´Ï´Ù
);

$backendOptions = array('cache_dir' => './tmp/');

$cache Zend_Cache::factory('Output''File'$frontendOptions$backendOptions);

// start() ¸Þ¼Òµå¿¡ ÀÏÀÇÀΠID (À»)¸¦ °Ç³×ÁÝ´Ï´Ù
if(!$cache->start('mypage')) {
    
// Åë»ó ´ë·Î¿¡ Ãâ·ÂÇÕ´Ï´Ù

    
echo 'Hello world! ';
    echo 
'À̰ÍÀº ij½¬µË´Ï´Ù ('.time().') ';

    
$cache->end(); // Ãâ·ÂÀÌ º¸Á¸µÇ¾î ºê¶ó¿ìÀú¿¡ ¼Û½ÅµË´Ï´Ù
}

echo 
'À̰ÍÀº ij½¬µÇÁö ¾Ê½À´Ï´Ù ('.time().').';

time() ÀÇ °á°ú¸¦ µÎ ¹ø Ãâ·ÂÇϰí ÀÖ´Â °Í¿¡ ÁÖ¸ñÇսôÙ. µ¿ÀÛ ¼³¸í ¶§¹®¿¡, ¾î¶°ÇÑ µ¿ÀûÀÎ Ãâ·ÂÀ» °®°í ½Í¾ú½À´Ï´Ù.À̰ÍÀ» ½ÇÇàÇØ, ÇÑÃþ ´õ ¸î ¹øÀΰ¡ ¡¸ÃÖ½ÅÀÇ Á¤º¸·Î °»½Å¡¹ÇØ º¾½Ã´Ù. µÑ°ÀÇ °ªÀÌ ½Ã¿Í ÇÔ²² º¯È­ÇØ ³ª°¡´Âµ¥ ´ëÇϰí, ÃÖÃÊÀÇ ºÐÀÇ °ªÀº º¯È­ÇÏÁö ¾Ê´Â °Í¿¡ ´«Ä¡ äÀ̰ÚÁö¿ä. ¿Ö³ÄÇϸé, ÃÖÃÊÀÇ °ªÀº ij½¬µÈ ¼½¼ÇÀÇ Ãâ·ÂÀ̸ç, ±× ¿ÜÀÇ ³»¿ë°ú ÇÔ²² ij½¬¿¡ º¸Á¸µÇ°í Àֱ⠶§¹®ÀÔ´Ï´Ù. 30 Ãʰæ°úÇϸé (À¯È¿±â°£À» 30 ÃÊ·Î ¼³Á¤ÇßÀ¸¹Ç·Î), µÎ °ªÀº ´Ù½Ã ÀÏÄ¡ÇÏ°Ô µË´Ï´Ù.À̰ÍÀº ij½¬ ·¹Äڵ尡 À¯È¿±â°£ Á¶°¢ÀÌ µÇ¾î, Çѹø ´õ ij½¬ ´Ù½Ã ÇØÁ³±â ¶§¹®¿¡ÀÔ´Ï´Ù. ÀÌ ¿¹´Â, ºê¶ó¿ìÀú ȤÀº ÄַܼΠ½ÃÇèÇØ º¸¼¼¿ä.


[ÁÖÀÇ] ÁÖÀÇ

Zend_Cache (À»)¸¦ »ç¿ëÇÒ ¶§ , ij½¬ ID (save() ¹× start() ±×¸®°í »ç¿ëÇÕ´Ï´Ù) ¿¡ ÃæºÐÇÑ ÁÖÀ§¸¦ ±â¿ïÀ̵µ·Ï ÇսôÙ. À̰ÍÀº, ij½¬ÇÏ·Á°í Çϰí ÀÖ´Â ÀÚ¿ø³»¿¡¼­ ÀÏÀÇÀÏ Çʿ䰡 ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¹«°ü°èÇÑ ·¹Äڵ忡 ÀÇÇØ¼­ ij½¬°¡ »èÁ¦µÇ¾î ¹ö¸®°Å³ª ÇÑÃþ ´õ ³ª»Û °Í¿¡´Â ¿ÏÀüÈ÷ ¹«°ü°èÇÑ Àå¼Ò¿¡ Ç¥½ÃµÇ¾î ¹ö¸®°Å³ª¶ó°í ÇÏ´Â ¹®Á¦°¡ ÀϾ´Ï´Ù.