From 6b5e95a0c4a438a3dd5daa74f923ab0980799e74 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sun, 7 Feb 2016 23:13:22 +0900 Subject: [PATCH] Select InnoDB engine automatically if available --- classes/db/DB.class.php | 21 ++++++--------------- modules/install/install.controller.php | 22 +++++++--------------- modules/install/install.view.php | 4 ++-- modules/install/lang/en.php | 6 ++---- modules/install/lang/es.php | 6 ++---- modules/install/lang/fr.php | 6 ++---- modules/install/lang/ja.php | 6 ++---- modules/install/lang/ko.php | 6 ++---- modules/install/lang/ru.php | 6 ++---- modules/install/lang/tr.php | 6 ++---- modules/install/lang/vi.php | 6 ++---- modules/install/lang/zh-CN.php | 6 ++---- modules/install/lang/zh-TW.php | 6 ++---- modules/install/tpl/db_config.html | 2 +- modules/install/tpl/progress_menu.html | 2 +- 15 files changed, 37 insertions(+), 74 deletions(-) diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index 4068cbc11..823dcd7c9 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -24,9 +24,7 @@ class DB */ var $priority_dbms = array( 'mysqli' => 6, - 'mysqli_innodb' => 5, 'mysql' => 4, - 'mysql_innodb' => 3, 'cubrid' => 2, 'mssql' => 1 ); @@ -284,30 +282,23 @@ class DB $supported_list = FileHandler::readDir($db_classes_path, $filter, TRUE); // after creating instance of class, check is supported - for($i = 0; $i < count($supported_list); $i++) + foreach ($supported_list as $db_type) { - $db_type = $supported_list[$i]; - $class_name = sprintf("DB%s%s", strtoupper(substr($db_type, 0, 1)), strtolower(substr($db_type, 1))); $class_file = sprintf(_XE_PATH_ . "classes/db/%s.class.php", $class_name); - if(!file_exists($class_file)) + if(!file_exists($class_file) || stripos($class_file, '_innodb') !== false) { continue; } - - unset($oDB); + require_once($class_file); $oDB = new $class_name(); - - if(!$oDB) - { - continue; - } - + $obj = new stdClass; $obj->db_type = $db_type; $obj->enable = $oDB->isSupported() ? TRUE : FALSE; - + unset($oDB); + $get_supported_list[] = $obj; } diff --git a/modules/install/install.controller.php b/modules/install/install.controller.php index a77ac0f1f..ba1bd9435 100644 --- a/modules/install/install.controller.php +++ b/modules/install/install.controller.php @@ -51,29 +51,21 @@ class installController extends install return $output; } - // Check if MySQL server supports InnoDB. - if(stripos($config->db_type, 'innodb') !== false) + // Check MySQL server capabilities. + if(stripos($config->db_type, 'mysql') !== false) { - $innodb_supported = false; + // Check if InnoDB is supported. $show_engines = $oDB->_fetch($oDB->_query('SHOW ENGINES')); foreach($show_engines as $engine_info) { - if(strcasecmp($engine_info->Engine, 'InnoDB') === 0) + if ($engine_info->Engine === 'InnoDB') { - $innodb_supported = true; + $config->db_type .= '_innodb'; + break; } } - // If server does not support InnoDB, fall back to default storage engine (usually MyISAM). - if(!$innodb_supported) - { - $config->db_type = str_ireplace('_innodb', '', $config->db_type); - } - } - - // Check if MySQL server supports utf8mb4. - if(stripos($config->db_type, 'mysql') !== false) - { + // Check if utf8mb4 is supported. $oDB->charset = $oDB->getBestSupportedCharset(); $config->db_charset = $oDB->charset; } diff --git a/modules/install/install.view.php b/modules/install/install.view.php index 1e11a5623..b45dae69c 100644 --- a/modules/install/install.view.php +++ b/modules/install/install.view.php @@ -114,7 +114,7 @@ class installView extends install } */ - $defaultDatabase = 'mysqli_innodb'; + $defaultDatabase = 'mysqli'; $disableList = DB::getDisableList(); if(is_array($disableList)) { @@ -122,7 +122,7 @@ class installView extends install { if($value->db_type == $defaultDatabase) { - $defaultDatabase = 'mysqli'; + $defaultDatabase = 'mysql'; break; } } diff --git a/modules/install/lang/en.php b/modules/install/lang/en.php index 2f663af67..de085fdcb 100644 --- a/modules/install/lang/en.php +++ b/modules/install/lang/en.php @@ -45,10 +45,8 @@ $lang->cmd_install_refresh_page = 'Refresh'; $lang->cmd_install_next = 'Continue installation'; $lang->cmd_ignore = 'Ignore'; $lang->cmd_recommended = 'Recommended'; -$lang->db_desc['mysqli'] = 'Use MySQL as a database via the mysqli extension.
Use the MyISAM storage engine, which does not support transactions.'; -$lang->db_desc['mysqli_innodb'] = 'Use MySQL as a database via the mysqli extension.
Use the InnoDB storage engine, which supports transactions and higher concurrency.'; -$lang->db_desc['mysql'] = 'Use MySQL as a database via PHP\'s mysql_* functions.
Use the MyISAM storage engine, which does not support transactions.'; -$lang->db_desc['mysql_innodb'] = 'Use MySQL as a database via PHP\'s mysql_* functions.
Use the InnoDB storage engine, which supports transactions and higher concurrency.'; +$lang->db_desc['mysqli'] = 'Use MySQL as a database via the mysqli extension.'; +$lang->db_desc['mysql'] = 'Use MySQL as a database via mysql_* functions.'; $lang->db_desc['cubrid'] = 'Use CUBRID as a database. See Manual for more info'; $lang->db_desc['mssql'] = 'Use Microsoft SQL Server as a database.'; $lang->can_use_when_installed = 'Not installed on this server'; diff --git a/modules/install/lang/es.php b/modules/install/lang/es.php index 341cc9522..1f02f3644 100644 --- a/modules/install/lang/es.php +++ b/modules/install/lang/es.php @@ -24,10 +24,8 @@ $lang->install_permission_denied = 'La atribución de la ruta de instalacion no $lang->cmd_install_refresh_page = 'Refrescar'; $lang->cmd_install_next = 'Continuar la instalación'; $lang->cmd_recommended = 'Recomendado'; -$lang->db_desc['mysqli'] = 'Utilizando las funciones mysqli*() de PHP usar DB mysql.
La transacción es desabilitado ya que DB(Bases de Datos) está creado por myisam.'; -$lang->db_desc['mysqli_innodb'] = 'Utilizando innodb usar BD mysql.
La transacción es hablilitado para innodb'; -$lang->db_desc['mysql'] = 'Utilizando las funciones mysql_*() de PHP usar DB mysql.
La transacción es desabilitado ya que DB(Bases de Datos) está creado por myisam.'; -$lang->db_desc['mysql_innodb'] = 'Utilizando innodb usar BD mysql.
La transacción es hablilitado para innodb'; +$lang->db_desc['mysqli'] = 'Utilizando las funciones mysqli*() de PHP usar DB mysql.'; +$lang->db_desc['mysql'] = 'Utilizando las funciones mysql_*() de PHP usar DB mysql.'; $lang->db_desc['cubrid'] = 'Usar BD CUBRID. Manual'; $lang->db_desc['mssql'] = 'Usar Microsoft SQL Server.'; $lang->form_title = 'Ingresar BD & Información del Administrador;'; diff --git a/modules/install/lang/fr.php b/modules/install/lang/fr.php index 957d1f454..8049b694a 100644 --- a/modules/install/lang/fr.php +++ b/modules/install/lang/fr.php @@ -24,10 +24,8 @@ $lang->install_permission_denied = 'La permission du chemin d\'installation n\'e $lang->cmd_install_refresh_page = 'Rafraîchir'; $lang->cmd_install_next = 'Continuer à installer'; $lang->cmd_recommended = 'Recommandé'; -$lang->db_desc['mysqli'] = 'Utilisera fonction mysqli*() pour utiliser la base de données de mysql.
La transaction sera invalidé parce que le fichier de Base de Données est créé par myisam.'; -$lang->db_desc['mysqli_innodb'] = 'Utilisera innodb pour utiliser Base de Données de mysql.
La transaction sera validé pour innodb'; -$lang->db_desc['mysql'] = 'Utilisera fonction mysql_*() pour utiliser la base de données de mysql.
La transaction sera invalidé parce que le fichier de Base de Données est créé par myisam.'; -$lang->db_desc['mysql_innodb'] = 'Utilisera innodb pour utiliser Base de Données de mysql.
La transaction sera validé pour innodb'; +$lang->db_desc['mysqli'] = 'Utilisera fonction mysqli_*() pour utiliser la base de données de MySQL.'; +$lang->db_desc['mysql'] = 'Utilisera fonction mysql_*() pour utiliser la base de données de MySQL'; $lang->db_desc['cubrid'] = 'Utiliser la Base de Données de CUBRID. Manual'; $lang->db_desc['mssql'] = 'Utiliser la Base de Données de Microsoft SQL Server.'; $lang->can_use_when_installed = 'Pas installé sur ce serveur'; diff --git a/modules/install/lang/ja.php b/modules/install/lang/ja.php index 14d50a39a..62a050b02 100644 --- a/modules/install/lang/ja.php +++ b/modules/install/lang/ja.php @@ -45,10 +45,8 @@ $lang->cmd_install_refresh_page = 'リフレッシュ'; $lang->cmd_install_next = 'インストールを続けます。'; $lang->cmd_ignore = 'FTP設定を省略する'; $lang->cmd_recommended = '推奨'; -$lang->db_desc['mysqli'] = 'mysqliモジュールを使用してMySQL DBに接続します。
MyISAMのエンジンを使用するので、トランザクションが行われず、データの損傷の危険があります。'; -$lang->db_desc['mysqli_innodb'] = 'mysqliモジュールを使用してMySQL DBに接続します。
InnoDBのエンジンは、トランザクションを支援してデータの損傷の危険が低く、同時処理能力が優れています。'; -$lang->db_desc['mysql'] = 'PHPのmysql_*()関数を使用してMySQL DBに接続します。
MyISAMのエンジンを使用するので、トランザクションが行われず、データの損傷の危険があります。'; -$lang->db_desc['mysql_innodb'] = 'PHPのmysql_*()関数を使用してMySQL DBに接続します。
InnoDBのエンジンは、トランザクションを支援してデータの損傷の危険が低く、同時処理能力が優れています。'; +$lang->db_desc['mysqli'] = 'mysqliモジュールを使用してMySQL DBに接続します。'; +$lang->db_desc['mysql'] = 'mysql_*()関数を使用してMySQL DBに接続します。'; $lang->db_desc['cubrid'] = 'CUBRID DBを利用します。 Manual'; $lang->db_desc['mssql'] = 'Microsoft SQL Serverを利用します。'; $lang->can_use_when_installed = 'このサーバーにインストールされていません'; diff --git a/modules/install/lang/ko.php b/modules/install/lang/ko.php index 1645ce903..2cf716b81 100644 --- a/modules/install/lang/ko.php +++ b/modules/install/lang/ko.php @@ -45,10 +45,8 @@ $lang->cmd_install_refresh_page = '새로고침'; $lang->cmd_install_next = '설치를 진행합니다.'; $lang->cmd_ignore = '무시'; $lang->cmd_recommended = '권장'; -$lang->db_desc['mysqli'] = 'mysqli 모듈을 사용하여 MySQL DB에 접속합니다.
MyISAM 저장엔진을 사용하므로 트랜잭션이 이루어지지 않으며 데이터 손상의 위험이 있습니다.'; -$lang->db_desc['mysqli_innodb'] = 'mysqli 모듈을 사용하여 MySQL DB에 접속합니다.
InnoDB 저장엔진은 트랜잭션을 지원하여 데이터 손상의 위험이 낮으며, 동시 처리 능력이 뛰어납니다.'; -$lang->db_desc['mysql'] = 'PHP의 mysql_*() 함수를 사용하여 MySQL DB에 접속합니다.
MyISAM 저장엔진을 사용하므로 트랜잭션이 이루어지지 않으며 데이터 손상의 위험이 있습니다.'; -$lang->db_desc['mysql_innodb'] = 'PHP의 mysql_*() 함수를 사용하여 MySQL DB에 접속합니다.
InnoDB 저장엔진은 트랜잭션을 지원하여 데이터 손상의 위험이 낮으며, 동시 처리 능력이 뛰어납니다.'; +$lang->db_desc['mysqli'] = 'mysqli 모듈을 사용하여 MySQL DB에 접속합니다.'; +$lang->db_desc['mysql'] = 'mysql_*() 함수를 사용하여 MySQL DB에 접속합니다.'; $lang->db_desc['cubrid'] = 'CUBRID DB를 이용합니다. Manual'; $lang->db_desc['mssql'] = 'Microsoft SQL Server를 이용합니다.'; $lang->can_use_when_installed = '설치되어 있지 않음'; diff --git a/modules/install/lang/ru.php b/modules/install/lang/ru.php index f936bb0b3..17503a938 100644 --- a/modules/install/lang/ru.php +++ b/modules/install/lang/ru.php @@ -24,10 +24,8 @@ $lang->install_permission_denied = 'Права доступа пути не ус $lang->cmd_install_refresh_page = 'обновление'; $lang->cmd_install_next = 'Продолжить установку'; $lang->cmd_recommended = 'рекомендуемые'; -$lang->db_desc['mysqli'] = 'Используем mysqli*() функцию, чтобы использовать базу данных mysql.
Транзакция отключена из-за того, что файл базы данных создан посредством myisam.'; -$lang->db_desc['mysqli_innodb'] = 'Используем innodb чтобы использовать базу данных mysql.
Транзакция включена для innodb'; -$lang->db_desc['mysql'] = 'Используем mysql_*() функцию, чтобы использовать базу данных mysql.
Транзакция отключена из-за того, что файл базы данных создан посредством myisam.'; -$lang->db_desc['mysql_innodb'] = 'Используем innodb чтобы использовать базу данных mysql.
Транзакция включена для innodb'; +$lang->db_desc['mysqli'] = 'Используем mysqli_*() функцию, чтобы использовать базу данных mysql.'; +$lang->db_desc['mysql'] = 'Используем mysql_*() функцию, чтобы использовать базу данных mysql.'; $lang->db_desc['cubrid'] = 'Используем CUBRID DB. Manual'; $lang->db_desc['mssql'] = 'Используем Microsoft SQL Server DB.'; $lang->form_title = 'Пожалуйста, введите дазу данных & Административная Информация'; diff --git a/modules/install/lang/tr.php b/modules/install/lang/tr.php index 3ab533f8d..762bd627a 100644 --- a/modules/install/lang/tr.php +++ b/modules/install/lang/tr.php @@ -25,10 +25,8 @@ $lang->cmd_install_refresh_page = 'Gerekli koşulları tamamladım.'; $lang->cmd_install_next = 'Kuruluma Devam Et'; $lang->cmd_ignore = 'Önemseme'; $lang->cmd_recommended = 'Tavsiye edilen'; -$lang->db_desc['mysqli'] = 'PHP\'de mysqli*() özellikleri için MySQL\'ü veritabanı olarak kullanınız.
İşlemler, veritabanı dosyası myisam \'da oluşturulduğu zaman işlenmeyecektir.'; -$lang->db_desc['mysqli_innodb'] = 'innodb ile MySQL\'ü veritabanı olrak kullanınız.
İşlemler, innodb ile işlenecektir'; -$lang->db_desc['mysql'] = 'PHP\'de mysql_*() özellikleri için MySQL\'ü veritabanı olarak kullanınız.
İşlemler, veritabanı dosyası myisam \'da oluşturulduğu zaman işlenmeyecektir.'; -$lang->db_desc['mysql_innodb'] = 'innodb ile MySQL\'ü veritabanı olrak kullanınız.
İşlemler, innodb ile işlenecektir'; +$lang->db_desc['mysqli'] = 'PHP\'de mysqli_*() özellikleri için MySQL\'ü veritabanı olarak kullanınız.'; +$lang->db_desc['mysql'] = 'PHP\'de mysql_*() özellikleri için MySQL\'ü veritabanı olarak kullanınız.'; $lang->db_desc['cubrid'] = 'CUBRID\'ü veritabanı olarak kullanın. Daha fazla bilgi için Manueli inceleyiniz'; $lang->db_desc['mssql'] = 'Microsoft SQL Server\'ü veritabanı olarak kullanın'; $lang->form_title = 'Veritabanı & Yönetici Bilgisi'; diff --git a/modules/install/lang/vi.php b/modules/install/lang/vi.php index c92079840..e90cf09bd 100644 --- a/modules/install/lang/vi.php +++ b/modules/install/lang/vi.php @@ -20,10 +20,8 @@ $lang->cmd_install_refresh_page = 'Tôi đã thay đổi để phù hợp với $lang->cmd_install_next = 'Tiếp tục cài đặt'; $lang->cmd_ignore = 'Bỏ qua'; $lang->cmd_recommended = 'Đê'; -$lang->db_desc['mysqli'] = 'Dùng chức năng mysqli*() để sử dụng MySql Database.
Giao dịch được vô hiệu hóa bởi File Database được tạo ra bởi myisam.'; -$lang->db_desc['mysqli_innodb'] = 'Dùng chức năng innodb để sử dụng MySql Database.
Giao dịch được kích hoạt cho innodb'; -$lang->db_desc['mysql'] = 'Dùng chức năng mysql_*() để sử dụng MySql Database.
Giao dịch được vô hiệu hóa bởi File Database được tạo ra bởi myisam.'; -$lang->db_desc['mysql_innodb'] = 'Dùng chức năng innodb để sử dụng MySql Database.
Giao dịch được kích hoạt cho innodb'; +$lang->db_desc['mysqli'] = 'Dùng chức năng mysqli_*() để sử dụng MySql Database.'; +$lang->db_desc['mysql'] = 'Dùng chức năng mysql_*() để sử dụng MySql Database.'; $lang->db_desc['cubrid'] = 'Sử dụng CUBRID Database. Hướng dẫn'; $lang->form_title = 'Hãy nhập thông tin Database và thông tin Administrator'; $lang->db_title = 'Xin hãy nhập thông tin Database'; diff --git a/modules/install/lang/zh-CN.php b/modules/install/lang/zh-CN.php index 827234d9c..7889c68f2 100644 --- a/modules/install/lang/zh-CN.php +++ b/modules/install/lang/zh-CN.php @@ -33,10 +33,8 @@ $lang->cmd_install_refresh_page = '刷新屏幕'; $lang->cmd_install_next = '开始安装'; $lang->cmd_ignore = '忽略'; $lang->cmd_recommended = '推荐'; -$lang->db_desc['mysqli'] = '利用php的 mysqli*()函数使用mysql DB。
DB数据是以myisam生成,因此不能实现transaction。'; -$lang->db_desc['mysqli_innodb'] = '利用innodb使用mysql DB。
innodb可以使用transaction。'; -$lang->db_desc['mysql'] = '利用php的 mysql_*()函数使用mysql DB。
DB数据是以myisam生成,因此不能实现transaction。'; -$lang->db_desc['mysql_innodb'] = '利用innodb使用mysql DB。
innodb可以使用transaction。'; +$lang->db_desc['mysqli'] = '利用php的 mysqli*()函数使用mysql DB。'; +$lang->db_desc['mysql'] = '利用php的 mysql_*()函数使用mysql DB。'; $lang->db_desc['cubrid'] = '使用CUBRID DB。 Manual'; $lang->db_desc['mssql'] = '使用 Microsoft SQL Server。'; $lang->can_use_when_installed = '不是这个服务器上安装'; diff --git a/modules/install/lang/zh-TW.php b/modules/install/lang/zh-TW.php index 2d2fce818..b2820c286 100644 --- a/modules/install/lang/zh-TW.php +++ b/modules/install/lang/zh-TW.php @@ -33,10 +33,8 @@ $lang->cmd_install_refresh_page = '刷新屏幕'; $lang->cmd_install_next = '開始進行安裝'; $lang->cmd_ignore = '忽略'; $lang->cmd_recommended = '推薦'; -$lang->db_desc['mysqli'] = '利用 PHP 的『mysqli*()』函數使用 MySQL 資料庫。
利用『myisam』建立資料庫檔案,因此不能實現transaction。'; -$lang->db_desc['mysqli_innodb'] = '利用『innodb』使用 Mysql 資料庫。
innodb可以使用 transaction。'; -$lang->db_desc['mysql'] = '利用 PHP 的『mysql_*()』函數使用 MySQL 資料庫。
利用『myisam』建立資料庫檔案,因此不能實現transaction。'; -$lang->db_desc['mysql_innodb'] = '利用『innodb』使用 Mysql 資料庫。
innodb可以使用 transaction。'; +$lang->db_desc['mysqli'] = '利用 PHP 的『mysqli*()』函數使用 MySQL 資料庫。'; +$lang->db_desc['mysql'] = '利用 PHP 的『mysql_*()』函數使用 MySQL 資料庫。'; $lang->db_desc['cubrid'] = '使用 CUBRID DB。 Manual'; $lang->db_desc['mssql'] = '使用 Microsoft SQL Server。'; $lang->can_use_when_installed = '不是這個服務器上安裝'; diff --git a/modules/install/tpl/db_config.html b/modules/install/tpl/db_config.html index 5baebc488..259230de2 100644 --- a/modules/install/tpl/db_config.html +++ b/modules/install/tpl/db_config.html @@ -16,7 +16,7 @@ diff --git a/modules/install/tpl/progress_menu.html b/modules/install/tpl/progress_menu.html index 6fb670a47..12c1ef842 100644 --- a/modules/install/tpl/progress_menu.html +++ b/modules/install/tpl/progress_menu.html @@ -2,7 +2,7 @@