- added "WAIT_TIMEOUT" and "INTERACTIVE_TIMEOUT" as _MySQL_ required vars to requirements.ini (relevant for persistent DB connections)
- improved DB requirements shown on `/setup` page - improved _Redis_ Client connections. Added "client name" (https://redis.io/commands/client-setname)
This commit is contained in:
@@ -499,7 +499,7 @@ class Sso extends Api\User{
|
||||
protected function updateCharacter(\stdClass $characterData) : ?Pathfinder\CharacterModel {
|
||||
$character = null;
|
||||
|
||||
if( !empty($characterData->character) ){
|
||||
if(!empty($characterData->character)){
|
||||
/**
|
||||
* @var $character Pathfinder\CharacterModel
|
||||
*/
|
||||
@@ -511,7 +511,7 @@ class Sso extends Api\User{
|
||||
|
||||
$character->corporationId = $characterData->corporation;
|
||||
$character->allianceId = $characterData->alliance;
|
||||
$character = $character->save();
|
||||
$character->save();
|
||||
}
|
||||
|
||||
return $character;
|
||||
|
||||
@@ -1410,6 +1410,7 @@ class Setup extends Controller {
|
||||
* @return array
|
||||
*/
|
||||
protected function checkDBConfig(\Base $f3, \lib\db\SQL $db) : array {
|
||||
$checkAll = true;
|
||||
// some db like "Maria DB" have some strange version strings....
|
||||
$dbVersionString = $db->version();
|
||||
$dbVersionParts = explode('-', $dbVersionString);
|
||||
@@ -1423,11 +1424,13 @@ class Setup extends Controller {
|
||||
}
|
||||
|
||||
$dbConfig = [
|
||||
'version' => [
|
||||
'label' => 'DB version',
|
||||
'required' => $f3->get('REQUIREMENTS.MYSQL.VERSION'),
|
||||
'version' => $dbVersion,
|
||||
'check' => version_compare($dbVersion, $f3->get('REQUIREMENTS.MYSQL.VERSION'), '>=' )
|
||||
'data' => [
|
||||
'version' => [
|
||||
'label' => 'DB version',
|
||||
'required' => $f3->get('REQUIREMENTS.MYSQL.VERSION'),
|
||||
'version' => $dbVersion,
|
||||
'check' => version_compare($dbVersion, $f3->get('REQUIREMENTS.MYSQL.VERSION'), '>=' ) ? : $checkAll = false
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
@@ -1443,16 +1446,32 @@ class Setup extends Controller {
|
||||
return !empty($match) ? end(reset($match)) : 'unknown';
|
||||
};
|
||||
|
||||
$checkValue = function($requiredValue, $value) : bool {
|
||||
$check = true;
|
||||
if(!empty($requiredValue)){
|
||||
if(is_int($requiredValue)){
|
||||
$check = $requiredValue <= $value;
|
||||
}else{
|
||||
$check = $requiredValue == $value;
|
||||
}
|
||||
}
|
||||
return $check;
|
||||
};
|
||||
|
||||
foreach($mySQLConfig as $param => $requiredValue){
|
||||
$value = $getValue($param);
|
||||
$dbConfig[] = [
|
||||
$dbConfig['data'][] = [
|
||||
'label' => $param,
|
||||
'required' => $requiredValue,
|
||||
'version' => $value,
|
||||
'check' => !empty($requiredValue) ? ($requiredValue == $value) : true
|
||||
'check' => $checkValue($requiredValue, $value) ? : $checkAll = false
|
||||
];
|
||||
}
|
||||
|
||||
$dbConfig['meta'] = [
|
||||
'check' => $checkAll
|
||||
];
|
||||
|
||||
return $dbConfig;
|
||||
}
|
||||
|
||||
|
||||
@@ -131,6 +131,12 @@ abstract class AbstractClient extends \Prefab {
|
||||
Config::REDIS_OPT_READ_TIMEOUT
|
||||
)
|
||||
){
|
||||
|
||||
if(isset($poolConfig['tag'])){
|
||||
$name = 'pathfinder|php|tag:' . strtolower($poolConfig['tag']) . '|pid:' . getmypid();
|
||||
$client->client('setname', $name);
|
||||
}
|
||||
|
||||
if(isset($poolConfig['db'])){
|
||||
$client->select($poolConfig['db']);
|
||||
}
|
||||
@@ -179,7 +185,8 @@ abstract class AbstractClient extends \Prefab {
|
||||
* @return array
|
||||
*/
|
||||
protected function getCachePoolConfig(\Base $f3) : array {
|
||||
$dsn = (string)$f3->get('API_CACHE');
|
||||
$tag = 'API_CACHE';
|
||||
$dsn = (string)$f3->get($tag);
|
||||
|
||||
// fallback
|
||||
$conf = ['type' => 'array'];
|
||||
@@ -195,6 +202,10 @@ abstract class AbstractClient extends \Prefab {
|
||||
// redis or filesystem -> overwrites $conf
|
||||
Config::parseDSN($dsn, $conf);
|
||||
|
||||
// tag name is used as alias name e.g. for debugging
|
||||
// -> e.g. for Redis https://redis.io/commands/client-setname
|
||||
$conf['tag'] = $tag;
|
||||
|
||||
return $conf;
|
||||
}
|
||||
|
||||
|
||||
@@ -234,7 +234,6 @@ class Config extends \Prefab {
|
||||
$f3->set(self::HIVE_KEY_ENVIRONMENT, $environmentData);
|
||||
}
|
||||
|
||||
|
||||
return $environmentData;
|
||||
}
|
||||
|
||||
|
||||
@@ -108,6 +108,6 @@ abstract class AbstractPathfinderModel extends AbstractModel {
|
||||
// parent::save() resets the schema and old values get replaced with new values
|
||||
$this->fieldChanges = $this->getFieldChanges();
|
||||
|
||||
parent::save();
|
||||
return parent::save();
|
||||
}
|
||||
}
|
||||
@@ -70,6 +70,8 @@ COLLATION_DATABASE = utf8_general_ci
|
||||
COLLATION_CONNECTION = utf8_general_ci
|
||||
FOREIGN_KEY_CHECKS = ON
|
||||
INNODB_FILE_PER_TABLE = ON
|
||||
WAIT_TIMEOUT = 28800
|
||||
INTERACTIVE_TIMEOUT = {{ @REQUIREMENTS.MYSQL.VARS.WAIT_TIMEOUT }}
|
||||
|
||||
[REQUIREMENTS.REDIS]
|
||||
VERSION = 3.0
|
||||
|
||||
@@ -476,7 +476,7 @@
|
||||
<check if="{{ @dbInformation.info.connected }}">
|
||||
<true>
|
||||
<kbd class="txt-color txt-color-success">
|
||||
connected<check if="{{ @dbInformation.info.persistent }}"> (persistent)</check>
|
||||
connected<check if="{{ @dbInformation.info.persistent }}"> (persistent)</check>
|
||||
</kbd>
|
||||
</true>
|
||||
<false>
|
||||
@@ -505,20 +505,22 @@
|
||||
|
||||
<check if="{{ @dbInformation.info.dbConfig }}">
|
||||
<tr>
|
||||
<th></th>
|
||||
<th class="text-right">required</th>
|
||||
<th class="text-right">installed</th>
|
||||
<th class="text-right"></th>
|
||||
<td data-target=".{{ @dbInformation.info.name }}_dbConfig_col" data-toggle="collapse" aria-expanded="false" aria-controls="{{ @dbInformation.info.name }}__dbConfig_col">
|
||||
<i class="fas fa-fw fa-chevron-right pf-animate-rotate"></i>
|
||||
</td>
|
||||
<td class="col-sm-3 col-md-3 text-right">required</td>
|
||||
<td class="col-sm-3 col-md-3 text-right">installed</td>
|
||||
<td class="col-sm-1 col-md-1 text-right"></td>
|
||||
</tr>
|
||||
<repeat group="{{ @dbInformation.info.dbConfig }}" value="{{ @setting }}">
|
||||
<tr>
|
||||
<td>{{ @setting.label }}</td>
|
||||
<td class="text-right">
|
||||
<repeat group="{{ @dbInformation.info.dbConfig.data }}" value="{{ @setting }}">
|
||||
<tr class="{{ @dbInformation.info.name }}_dbConfig_col {{ @dbInformation.info.dbConfig.meta.check ? 'collapse' : '' }}">
|
||||
<td class="bg-color bg-color-tealDarker">{{ @setting.label }}</td>
|
||||
<td class="text-right bg-color bg-color-tealDarker">
|
||||
<check if="{{ @setting.required }}">
|
||||
<kbd>{{ @setting.required }}</kbd>
|
||||
</check>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<td class="text-right bg-color bg-color-tealDarker">
|
||||
<check if="{{ @setting.check }}">
|
||||
<true>
|
||||
<kbd class="txt-color txt-color-success">{{ @setting.version }}</kbd>
|
||||
@@ -528,7 +530,7 @@
|
||||
</false>
|
||||
</check>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<td class="text-right bg-color bg-color-tealDarker">
|
||||
<check if="{{ @setting.check }}">
|
||||
<true>
|
||||
<i class="fas fa-fw fa-check txt-color txt-color-success"></i>
|
||||
|
||||
Reference in New Issue
Block a user