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, //
ij½¬ÀÇ À¯È¿±â°£À» 2
½Ã°£À¸·Î ÇÕ´Ï´Ù
'automaticSerialization' => true
);
$backendOptions = array(
'cacheDir' => './tmp/' //
ij½¬ ÆÄÀÏÀ» ¾²´Â µð·ºÅ丮
);
// Zend_Cache_Core
¿ÀºêÁ§Æ®¸¦ ÃëµæÇÕ´Ï´Ù
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
?>
À̰ÍÀ¸·Î ÇÁ·ÐÆ®¿£µå¸¦ ¾òÀ» ¼ö ÀÖ¾ú½À´Ï´Ù.¸ðµç Á¾·ùÀÇ µ¥ÀÌÅ͸¦ º¸Á¸ÇÒ ¼ö ÀÖ½À´Ï´Ù ( ±× ¶§¹®¿¡(À§ÇØ), ½Ã¸®¾Æ¶óÀÌÁ À¯È¿ÇÏ°Ô Çß½À´Ï´Ù) .¿¹¸¦ µé¸é, ¸Å¿ì ½Ã°£ÀÌ °É¸®´Â µ¥ÀÌŸº£À̽º Äí¿¡¸®ÀÇ °á°ú¸¦ ij½¬ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù.ÀÏ´Ü Ä³½¬ÇØ ¹ö¸®¸é, ±×¸®°í´Â µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÏ´Â ÇÊ¿äÇÔ ¾ø½À´Ï´Ù.ij½¬·ÎºÎÅÍ ÃëµæÇÑ ·¹Äڵ带 ¾È½Ã¸®¾Æ¶óÀÌÁî ÇØ µ¥ÀÌÅ͸¦ ÃëµæÇϸé ÁÁ½À´Ï´Ù.
<?php
// $cache
(Àº)´Â ¹æ±ÝÀüÀÇ ¿¹·Î ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù
//
ij½¬°¡ ¹ú½á Á¸ÀçÇÒÁö¸¦ Á¶»çÇÕ´Ï´Ù
if(!$result = $cache->load('myresult')) {
//
ij½¬°¡ ¹ß°ßµÇÁö ¾Ê¾Ò½À´Ï´Ù.µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÕ´Ï´Ù
$db = Zend_Db::factory( [...] );
$result = $db->fetchAll('SELECT * FROM huge_table');
$cache->save($result, 'myresult');
} else {
//
ij½¬°¡ ¹ß°ßµÇ¾ú½À´Ï´Ù!
Å« ¼Ò¸®·Î ¿ÜĨ½Ã´Ù
echo "
À̰ÍÀº ij½¬·ÎºÎÅÍÀÇ µ¥ÀÌÅÍÀÔ´Ï´Ù!nn";
}
print_r($result);
?>
·Ê 4.2. Zend_Cache
Ãâ·Â ÇÁ·ÐÆ®¿£µå¿¡
ÀÇÇÑ Ãâ·ÂÀÇ Ä³½¬
¿ì¼±, Ãâ·ÂÀ» ij½¬ÇÏ°í ½ÍÀº ºÎºÐÀ» ¾î¶°ÇÑ Á¶°Ç½Ä¿¡¼ ¡¸¸¶Å© ¾÷¡¹ÇØ, ±× ÀüÈĸ¦ start()
¸Þ¼Òµå
¹× end()
¸Þ¼Òµå·Î µÑ·¯½Ô´Ï´Ù ( À̰ÍÀº ÃÖÃÊÀÇ ¿¹¸¦ ´à¾Æ ÀÖ¾î ij½¬ ó¸®ÀÇ ±âº»ÀÌ
µÇ´Â »ý°¢ÀÔ´Ï´Ù) .
³»ºÎ¿¡¼´Â, Åë»ó ´ë·Î¿¡ Ãâ·ÂÀ» ½Ç½ÃÇÕ´Ï´Ù.Ãâ·Â ³»¿ëÀº, end()
¸Þ¼Òµå¿¡ µµ´ÞÇÒ
¶§±îÁö Âß Ä³½¬µË´Ï´Ù.´ÙÀ½ ¹øÀÇ ½ÇÇà½Ã¿¡´Â, ÀÌ ¼½¼ÇÀÌ ÀÐ¾î ³¯¾Æ°¡ ±× ´ë½Å¿¡ ij½¬·ÎºÎÅÍ ÃëµæÇÑ µ¥ÀÌÅͰ¡ »ç¿ëµË´Ï´Ù ( ij½¬ ·¹Äڵ尡
À¯È¿ÇÑ °ÍÀ¸·Î ÇÑÁ¤ÇÕ´Ï´Ù) .
<?php
$frontendOptions = array(
'lifeTime' => 30, //
ij½¬ÀÇ À¯È¿±â°£Àº 30
ÃÊÀÔ´Ï´Ù
'automaticSerialization' => false //
À̰ÍÀº µðÆúƮġÀÔ´Ï´Ù
);n
$backendOptions = array('cacheDir' => './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 ( |