Skip to content

Commit

Permalink
ymlファイルのキャッシュ対応
Browse files Browse the repository at this point in the history
  • Loading branch information
k-yamamura committed Jun 7, 2016
1 parent 009e668 commit 58c8c86
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 86 deletions.
185 changes: 103 additions & 82 deletions src/Eccube/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

use Eccube\Application\ApplicationTrait;
use Eccube\Common\Constant;
use Symfony\Component\Config\ConfigCache;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\Finder\Finder;
use Symfony\Component\HttpFoundation\Request;
Expand Down Expand Up @@ -77,101 +78,113 @@ public function initConfig()
// load config
$app = $this;
$this['config'] = $this->share(function ($app) {
$ymlPath = __DIR__.'/../../app/config/eccube';
$distPath = __DIR__.'/../../src/Eccube/Resource/config';
$cachePath = __DIR__.'/../../app/cache/'.Constant::CONFIG_CACHE_FILE_NAME;

$config = array();
$config_yml = $ymlPath.'/config.yml';
if (file_exists($config_yml)) {
$config = Yaml::parse(file_get_contents($config_yml));
}
$cache = new ConfigCache($cachePath, false);

$config_dist = array();
$config_yml_dist = $distPath.'/config.yml.dist';
if (file_exists($config_yml_dist)) {
$config_dist = Yaml::parse(file_get_contents($config_yml_dist));
}
if (!$cache->isFresh()) {

$config_path = array();
$path_yml = $ymlPath.'/path.yml';
if (file_exists($path_yml)) {
$config_path = Yaml::parse(file_get_contents($path_yml));
// RootDirまでのpath補完
$config_path['root_dir'] = $app->getRootDir();
$config_path['public_path_realdir'] = $app->getRootDir().$config_path['public_path'];
$config_path['image_save_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['image_save_realdir'];
$config_path['image_temp_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['image_temp_realdir'];
$config_path['user_data_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['user_data_realdir'];
$config_path['block_default_realdir'] = $app->getSrcDir().$config_path['block_default_realdir'];
$config_path['block_realdir'] = $app->getAppDir().$config_path['block_realdir'];
$config_path['template_default_realdir'] = $app->getSrcDir().$config_path['template_default_realdir'];
$config_path['template_default_html_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['template_default_html_realdir'];
$config_path['template_admin_realdir'] = $app->getSrcDir().$config_path['template_admin_realdir'];
$config_path['template_admin_html_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['template_admin_html_realdir'];
$config_path['template_realdir'] = $app->getAppDir().$config_path['template_realdir'];
$config_path['template_html_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['template_html_realdir'];
$config_path['template_temp_realdir'] = $app->getAppDir().$config_path['template_temp_realdir'];
$config_path['csv_temp_realdir'] = $app->getAppDir().$config_path['csv_temp_realdir'];
$config_path['plugin_realdir'] = $app->getAppDir().$config_path['plugin_realdir'];
$config_path['plugin_temp_realdir'] = $app->getAppDir().$config_path['plugin_temp_realdir'];
$config_path['plugin_html_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['plugin_html_realdir'];
}
$ymlPath = __DIR__.'/../../app/config/eccube';
$distPath = __DIR__.'/../../src/Eccube/Resource/config';

$config_constant = array();
$constant_yml = $ymlPath.'/constant.yml';
if (file_exists($constant_yml)) {
$config_constant = Yaml::parse(file_get_contents($constant_yml));
$config_constant = empty($config_constant) ? array() : $config_constant;
}
$config = array();
$config_yml = $ymlPath.'/config.yml';
if (file_exists($config_yml)) {
$config = Yaml::parse(file_get_contents($config_yml));
}

$config_constant_dist = array();
$constant_yml_dist = $distPath.'/constant.yml.dist';
if (file_exists($constant_yml_dist)) {
$config_constant_dist = Yaml::parse(file_get_contents($constant_yml_dist));
}
$config_dist = array();
$config_yml_dist = $distPath.'/config.yml.dist';
if (file_exists($config_yml_dist)) {
$config_dist = Yaml::parse(file_get_contents($config_yml_dist));
}

$configAll = array_replace_recursive($config_constant_dist, $config_dist, $config_constant, $config_path, $config);
$config_path = array();
$path_yml = $ymlPath.'/path.yml';
if (file_exists($path_yml)) {
$config_path = Yaml::parse(file_get_contents($path_yml));
// RootDirまでのpath補完
$config_path['root_dir'] = $app->getRootDir();
$config_path['public_path_realdir'] = $app->getRootDir().$config_path['public_path'];
$config_path['image_save_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['image_save_realdir'];
$config_path['image_temp_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['image_temp_realdir'];
$config_path['user_data_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['user_data_realdir'];
$config_path['block_default_realdir'] = $app->getSrcDir().$config_path['block_default_realdir'];
$config_path['block_realdir'] = $app->getAppDir().$config_path['block_realdir'];
$config_path['template_default_realdir'] = $app->getSrcDir().$config_path['template_default_realdir'];
$config_path['template_default_html_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['template_default_html_realdir'];
$config_path['template_admin_realdir'] = $app->getSrcDir().$config_path['template_admin_realdir'];
$config_path['template_admin_html_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['template_admin_html_realdir'];
$config_path['template_realdir'] = $app->getAppDir().$config_path['template_realdir'];
$config_path['template_html_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['template_html_realdir'];
$config_path['template_temp_realdir'] = $app->getAppDir().$config_path['template_temp_realdir'];
$config_path['csv_temp_realdir'] = $app->getAppDir().$config_path['csv_temp_realdir'];
$config_path['plugin_realdir'] = $app->getAppDir().$config_path['plugin_realdir'];
$config_path['plugin_temp_realdir'] = $app->getAppDir().$config_path['plugin_temp_realdir'];
$config_path['plugin_html_realdir'] = $app->getRootDir().$config_path['public_path'].$config_path['plugin_html_realdir'];
}

$database = array();
$yml = $ymlPath.'/database.yml';
if (file_exists($yml)) {
$database = Yaml::parse(file_get_contents($yml));
}
$config_constant = array();
$constant_yml = $ymlPath.'/constant.yml';
if (file_exists($constant_yml)) {
$config_constant = Yaml::parse(file_get_contents($constant_yml));
$config_constant = empty($config_constant) ? array() : $config_constant;
}

$mail = array();
$yml = $ymlPath.'/mail.yml';
if (file_exists($yml)) {
$mail = Yaml::parse(file_get_contents($yml));
}
$configAll = array_replace_recursive($configAll, $database, $mail);
$config_constant_dist = array();
$constant_yml_dist = $distPath.'/constant.yml.dist';
if (file_exists($constant_yml_dist)) {
$config_constant_dist = Yaml::parse(file_get_contents($constant_yml_dist));
}

$config_log = array();
$yml = $ymlPath.'/log.yml';
if (file_exists($yml)) {
$config_log = Yaml::parse(file_get_contents($yml));
}
$config_log_dist = array();
$log_yml_dist = $distPath.'/log.yml.dist';
if (file_exists($log_yml_dist)) {
$config_log_dist = Yaml::parse(file_get_contents($log_yml_dist));
}
$configAll = array_replace_recursive($config_constant_dist, $config_dist, $config_constant, $config_path, $config);

$configAll = array_replace_recursive($configAll, $config_log_dist, $config_log);
$database = array();
$yml = $ymlPath.'/database.yml';
if (file_exists($yml)) {
$database = Yaml::parse(file_get_contents($yml));
}

$config_nav = array();
$yml = $ymlPath.'/nav.yml';
if (file_exists($yml)) {
$config_nav = array('nav' => Yaml::parse(file_get_contents($yml)));
}
$config_nav_dist = array();
$nav_yml_dist = $distPath.'/nav.yml.dist';
if (file_exists($nav_yml_dist)) {
$config_nav_dist = array('nav' => Yaml::parse(file_get_contents($nav_yml_dist)));
}
$mail = array();
$yml = $ymlPath.'/mail.yml';
if (file_exists($yml)) {
$mail = Yaml::parse(file_get_contents($yml));
}
$configAll = array_replace_recursive($configAll, $database, $mail);

$config_log = array();
$yml = $ymlPath.'/log.yml';
if (file_exists($yml)) {
$config_log = Yaml::parse(file_get_contents($yml));
}
$config_log_dist = array();
$log_yml_dist = $distPath.'/log.yml.dist';
if (file_exists($log_yml_dist)) {
$config_log_dist = Yaml::parse(file_get_contents($log_yml_dist));
}

$configAll = array_replace_recursive($configAll, $config_log_dist, $config_log);

$configAll = array_replace_recursive($configAll, $config_nav_dist, $config_nav);
$config_nav = array();
$yml = $ymlPath.'/nav.yml';
if (file_exists($yml)) {
$config_nav = array('nav' => Yaml::parse(file_get_contents($yml)));
}
$config_nav_dist = array();
$nav_yml_dist = $distPath.'/nav.yml.dist';
if (file_exists($nav_yml_dist)) {
$config_nav_dist = array('nav' => Yaml::parse(file_get_contents($nav_yml_dist)));
}

return $configAll;
$configAll = array_replace_recursive($configAll, $config_nav_dist, $config_nav);

$resource = array();

$cache->write(sprintf('<?php return %s', var_export($configAll, true)).';', $resource);

}

return require $cachePath;
});
}

Expand Down Expand Up @@ -511,6 +524,14 @@ public function initDoctrine()
'orm.proxies_dir' => __DIR__.'/../../app/cache/doctrine',
'orm.em.options' => array(
'mappings' => $ormMappings,
'metadata_cache' => array(
'driver' => 'filesystem',
'path' => __DIR__.'/../../app/cache/doctrine',
),
'query_cache' => array(
'driver' => 'filesystem',
'path' => __DIR__.'/../../app/cache/doctrine',
),
),
));
}
Expand Down
8 changes: 7 additions & 1 deletion src/Eccube/Common/Constant.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@

namespace Eccube\Common;

class Constant {
class Constant
{

/**
* EC-CUBE VERSION.
Expand All @@ -45,4 +46,9 @@ class Constant {
*/
const TOKEN_NAME = '_token';

/**
* Cache File Name.
*/
const CONFIG_CACHE_FILE_NAME = 'config.php.cache';

}
6 changes: 5 additions & 1 deletion src/Eccube/Controller/Install/InstallController.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ public function __construct()
$this->config_path = __DIR__ . '/../../../../app/config/eccube';
$this->dist_path = __DIR__ . '/../../Resource/config';
$this->cache_path = __DIR__ . '/../../../../app/cache';
$cachePath = __DIR__.'/../../../../app/cache/'. Constant::CONFIG_CACHE_FILE_NAME;

$file = new Filesystem();
$file->remove($cachePath);
}

private function isValid(Request $request, Form $form)
Expand Down Expand Up @@ -314,7 +318,7 @@ public function complete(InstallApplication $app, Request $request)
$host = $request->getSchemeAndHttpHost();
$basePath = $request->getBasePath();

$adminUrl = $host . $basePath . '/' . $config['admin_root'] . '/';
$adminUrl = $host . $basePath . '/' . $config['admin_route'] . '/';

return $app['twig']->render('complete.twig', array(
'admin_url' => $adminUrl,
Expand Down
4 changes: 2 additions & 2 deletions src/Eccube/Event/FormEventSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,13 @@ public static function getEvents()

public static function getSubscribedEvents()
{
// return array(
return array(
// FormEvents::PRE_SET_DATA => 'onPreSetData',
// FormEvents::POST_SET_DATA => 'onPostSetData',
// FormEvents::PRE_SUBMIT => 'onPreSubmit',
// FormEvents::SUBMIT => 'onSubmit',
// FormEvents::POST_SUBMIT => 'onPostSubmit',
// );
);
}

public function onPreSetData(FormEvent $event)
Expand Down

0 comments on commit 58c8c86

Please sign in to comment.