/**
  *  set cache
  *
  * @param  Charcoal_String $cache_key      identify cache
  * @param  array $data                     config data
  */
 public function setCache(Charcoal_String $cache_key, array $data)
 {
     $cache_dir = $this->getSandbox()->getProfile()->getString('CACHE_DIR');
     $cache_dir = new Charcoal_File(s($cache_dir));
     $cache_dir_mode = Charcoal_Profile::getString(s('CACHE_DIR_MODE'), s('777'));
     $cache_dir->makeDirectory($cache_dir_mode, b(TRUE));
     if (!$cache_dir->isDir()) {
         return;
     }
     $cache_file = new Charcoal_File(s($cache_key), $cache_dir);
     $contents = serialize($data);
     $fp = fopen($cache_file, 'wb');
     if ($fp) {
         if (flock($fp, LOCK_EX)) {
             fwrite($fp, $contents);
             fflush($fp);
             flock($fp, LOCK_UN);
         }
         $ret = fclose($fp);
     }
 }