Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Fungsi Pengendali Cache

Sebagai alternatif untuk menggunakan mekanisme cache berbasis-file standar, anda bisa menetapkan fungsi penanganan cache kustom yang akan digunakan untuk membaca, menulis dan membersihkan file yang di-cache.

Buat sebuah fungsi dalam aplikasi anda yang akan digunakan Smarty sebagai pengendali cache. Set namanya dalam variabel kelas $cache_handler_func . Smarty sekarang akan menggunakan ini untuk menangani data yang di-cache.

  • Argumen pertama adalah aksi, yang akan berupa salah satu dari read, write dan clear.

  • Parameter kedua adalah obyek Smarty.

  • Paremeter ketiga adalah konten yang di-cache. Setelah menulis, Smarty mengoper konten yang di-cache dalam parameter ini. Setelah membaca, Smarty mengharapkan fungsi anda untuk menerima parameter ini dengan referensi dan menempatkannya dengan data yang di-cache. Setelah membersihkan, mengoper variabel dummy di sini karena ia tidak digunakan.

  • Parameter ke empat adalah nama file template , diperlukan untuk membaca/menulis.

  • Parameter ke lima adalah opsional $cache_id.

  • Parameter ke enam adalah opsional $compile_id.

  • Parameter ke tujuh dan parameter terakhir $exp_time ditambahkan dalam Smarty-2.6.0.

Teladan 15-5. Contoh menggunakan MySQL sebagai sumber cache

cache_handler_func = \'mysql_cache_handler\'; $smarty->display(\'index.tpl\'); database mysql diharapkan dalam format ini: create database SMARTY_CACHE; create table CACHE_PAGES( CacheID char(32) PRIMARY KEY, CacheContents MEDIUMTEXT NOT NULL ); **************************************************/ function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null, $exp_time=null) { // set db host, user dan sandi di sini $db_host = \'localhost\'; $db_user = \'myuser\'; $db_pass = \'mypass\'; $db_name = \'SMARTY_CACHE\'; $use_gzip = false; // buat id cache unik $CacheID = md5($tpl_file.$cache_id.$compile_id); if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) { $smarty_obj->_trigger_error_msg(\'cache_handler: could not connect to database\'); return false; } mysql_select_db($db_name); switch ($action) { case \'read\': // baca cache dari database $results = mysql_query("select CacheContents from CACHE_PAGES where CacheID=\'$CacheID\'"); if(!$results) { $smarty_obj->_trigger_error_msg(\'cache_handler: query failed.\'); } $row = mysql_fetch_array($results,MYSQL_ASSOC); if($use_gzip && function_exists(\'gzuncompress\')) { $cache_content = gzuncompress($row[\'CacheContents\']); } else { $cache_content = $row[\'CacheContents\']; } $return = $results; break; case \'write\': // simpan cache ke database if($use_gzip && function_exists("gzcompress")) { // compress the contents for storage efficiency $contents = gzcompress($cache_content); } else { $contents = $cache_content; } $results = mysql_query("replace into CACHE_PAGES values( \'$CacheID\', \'".addslashes($contents)."\') "); if(!$results) { $smarty_obj->_trigger_error_msg(\'cache_handler: query failed.\'); } $return = $results; break; case \'clear\': // clear cache info if(empty($cache_id) && empty($compile_id) && empty($tpl_file)) { // clear them all $results = mysql_query(\'delete from CACHE_PAGES\'); } else { $results = mysql_query("delete from CACHE_PAGES where CacheID=\'$CacheID\'"); } if(!$results) { $smarty_obj->_trigger_error_msg(\'cache_handler: query failed.\'); } $return = $results; break; default: // salah, aksi tidak dikenal $smarty_obj->_trigger_error_msg("cache_handler: unknown action \\"$action\\""); $return = false; break; } mysql_close($link); return $return; } ?>'); ?>
Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors