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 ½Ã°£À¸·Î ÇÕ´Ï´Ù
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => './tmp/' // ij½¬ ÆÄÀÏÀ» ¾²´Â µð·ºÅ丮
);
// Zend_Cache_Core ¿ÀºêÁ§Æ®¸¦ ÃëµæÇÕ´Ï´Ù
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
![]() |
º¹¼öÀÇ ´Ü¾î·ÎºÎÅÍ µÇ´Â ÇÁ·ÐÆ®¿£µå³ª ¿¬±¸ ÃÖÁ¾ ´Ü°è¿¡ ´ëÇØ |
---|---|
'ZendPlatform' (¿Í)°ú °°ÀÌ º¹¼öÀÇ ´Ü¾î·ÎºÎÅÍ µÇ´Â ÇÁ·ÐÆ®¿£µå³ª ¿¬±¸ ÃÖÁ¾ ´Ü°èµµ ÀÖ½À´Ï´Ù. À̰ÍÀ» ÆÑÅ丮·Î ÁöÁ¤ÇÏ´Â °æ¿ì´Â, ´Ü¾îÀÇ »çÀÌ¿¡ ´Ü¶ôÁö¾î ¹®ÀÚ¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ´Ü¶ô ¹®Àڷμ´Â ½ºÆäÀ̽º (' '), ÇÏÀÌÇ ('-') ȤÀº ÇǸ®¿Àµå ('.') ÇÏÁö¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. |
·Ê 4.2. µ¥ÀÌŸº£À̽º¿¡ÀÇ Äõ¸®ÀÇ °á°úÀÇ Ä³½¬
À̰ÍÀ¸·Î ÇÁ·ÐÆ®¿£µå¸¦ ¾òÀ» ¼ö ÀÖ¾ú½À´Ï´Ù.¸ðµç Á¾·ùÀÇ µ¥ÀÌÅ͸¦ º¸Á¸ÇÒ ¼ö ÀÖ½À´Ï´Ù (±× ¶§¹®¿¡(À§ÇØ), ½Ã¸®¾ó¶óÀÌÁ À¯È¿ÇÏ°Ô Çß½À´Ï´Ù).¿¹¸¦ µé¸é, ¸Å¿ì ½Ã°£ÀÌ °É¸®´Â µ¥ÀÌŸº£À̽º Äõ¸®ÀÇ °á°ú¸¦ 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.3. Zend_Cache
Ãâ·Â ÇÁ·ÐÆ®¿£µå¿¡ ÀÇÇÑ Ãâ·ÂÀÇ Ä³½¬
¿ì¼±, Ãâ·ÂÀ» ij½¬ÇÏ°í ½ÍÀº ºÎºÐÀ» ¾î¶°ÇÑ Á¶°Ç½Ä¿¡¼ ¡¸¸¶Å© ¾÷¡¹ÇØ,
±× ÀüÈĸ¦ start()
¸Þ¼Òµå ¹× end()
¸Þ¼Òµå·Î µÑ·¯½Ô´Ï´Ù (À̰ÍÀº ÃÖÃÊÀÇ ¿¹¸¦ ´à¾Æ ÀÖ¾î ij½¬ ó¸®ÀÇ ±âº»ÀÌ µÇ´Â »ý°¢ÀÔ´Ï´Ù).
³»ºÎ¿¡¼´Â, Åë»ó ´ë·Î¿¡ Ãâ·ÂÀ» ½Ç½ÃÇÕ´Ï´Ù.Ãâ·Â ³»¿ëÀº, end()
¸Þ¼Òµå¿¡ µµ´ÞÇÒ ¶§±îÁö Âß Ä³½¬µË´Ï´Ù.´ÙÀ½ ¹øÀÇ ½ÇÇà½Ã¿¡´Â,
ÀÌ ¼½¼ÇÀÌ ÀÐ¾î ³¯¾Æ°¡ ±× ´ë½Å¿¡ ij½¬·ÎºÎÅÍ ÃëµæÇÑ µ¥ÀÌÅͰ¡ »ç¿ëµË´Ï´Ù
(ij½¬ ·¹Äڵ尡 À¯È¿ÇÑ °ÍÀ¸·Î ÇÑÁ¤ÇÕ´Ï´Ù).
<?php
$frontendOptions = array(
'lifetime' => 30, // ij½¬ÀÇ À¯È¿±â°£Àº 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 ( |