188 lines
5.9 KiB
PHP
188 lines
5.9 KiB
PHP
<?
|
|
namespace core\lang\structure;
|
|
|
|
use core\cache\credis;
|
|
use \core\db\structure\Column as C;
|
|
use \core\db\structure\eColumnType;
|
|
|
|
new LangVariable();
|
|
class LangVariable extends \ModuleTable {
|
|
// Название таблицы
|
|
static $table_name = 'langVariable';
|
|
// Ссылка на самого себя
|
|
static $self;
|
|
|
|
// Переменные столбцов
|
|
static $ID = 'id';
|
|
static $TEXT_ID = 'textId';
|
|
static $NAME = 'name';
|
|
|
|
|
|
static $base = null;
|
|
|
|
public static function installUniques() {
|
|
\DB::addUnique(self::$table_name,self::$table_name.'_unique',[self::$TEXT_ID]);
|
|
}
|
|
|
|
static function init(){
|
|
//echo 'init';
|
|
/*
|
|
$path = dirname(__FILE__).'/'.\Config::$LANG_ID.'.txt';
|
|
echo $path;
|
|
|
|
$start = microtime(true);
|
|
$f = fopen($path,'r');
|
|
$s = fgets($f);
|
|
fclose($f);
|
|
self::$base = json_decode($s,true);
|
|
echo '<br><b> Прочитать из файла<Br> '.(microtime(true)-$start).'</b><br>';
|
|
|
|
|
|
//Redis::init();
|
|
|
|
credis::init();
|
|
|
|
$start = microtime(true);
|
|
$id = credis::get('id');
|
|
echo '<br><b>Прочитать из Redis одного значения <Br> '.(microtime(true)-$start).'</b><br>';
|
|
|
|
$start = microtime(true);
|
|
$id = credis::get('id');
|
|
echo '<br><b>Прочитать из Redis одного значения <Br> '.(microtime(true)-$start).'</b><br>';
|
|
|
|
|
|
$start = microtime(true);
|
|
$id = credis::get('id');
|
|
echo '<br><b>Прочитать из Redis одного значения <Br> '.(microtime(true)-$start).'</b><br>';
|
|
//*
|
|
$start = microtime(true);
|
|
$id = credis::agetone('lang','sovaMember_TH_ID');
|
|
echo '<pre>';
|
|
echo var_dump($id);
|
|
echo '</pre>';
|
|
echo '<br><b>Прочитать из Redis одного значения <Br> '.(microtime(true)-$start).'</b><br>';
|
|
/**/
|
|
|
|
//$start = microtime(true);
|
|
//self::$base = credis::aget('lang');
|
|
//echo '<br><b>Прочитать из Redis<Br> '.(microtime(true)-$start).'</b><br>';
|
|
|
|
//$start = microtime(true);
|
|
|
|
/*
|
|
echo '<br><b> Прочитать из базы<Br> '.(microtime(true)-$start).'</b><br>';
|
|
|
|
$start = microtime(true);
|
|
$f = fopen($path,'w+');
|
|
$b = [];
|
|
foreach (self::$base as $k=>$v){
|
|
$val= $v[LangValue::$VALUE];
|
|
$b[$k] = $v[LangValue::$VALUE];
|
|
//fwrite($f,$k."\n");
|
|
//fwrite($f,str_replace("\n","\\n",$v[LangValue::$VALUE])."\n");
|
|
//credis::set($k,$val);
|
|
}
|
|
fwrite($f,je(self::$base));
|
|
fclose($f);
|
|
echo '<br><b>Записать в файл<br>'.(microtime(true)-$start).'</b><br>';
|
|
|
|
$start = microtime(true);
|
|
//credis::aset('lang',$b);
|
|
echo '<br><b>Записать в редис<br>'.(microtime(true)-$start).'</b><br>';
|
|
/**/
|
|
|
|
|
|
|
|
|
|
//*
|
|
self::$base = self::collectToTextIDArray(new \Where(\Where::_operator(LangValue::$LANG,'=',\Config::$LANG_ID)),
|
|
[
|
|
\Query::LEFT_JOINS=>[ [ LangValue::$table_name,LangValue::$VARIABLE,self::$ID ] ]
|
|
]
|
|
);
|
|
}
|
|
|
|
static function getNow($text_id){
|
|
$r = self::select($q = [
|
|
\Query::TABLES => self::$table_name,
|
|
\Query::WHERE=>
|
|
new \Where(\Where::_and([
|
|
\Where::_operator(LangValue::$LANG,'=',\Config::$LANG_ID),
|
|
\Where::_operator(self::$TEXT_ID,'=',$text_id),
|
|
])),
|
|
\Query::LEFT_JOINS=>[ [ LangValue::$table_name,LangValue::$VARIABLE,self::$ID ] ],
|
|
\Query::COUNT => 1,
|
|
],false);
|
|
//echo new \Query($q);
|
|
$res = \DB::fetch($r);
|
|
return $res[LangValue::$VALUE];
|
|
}
|
|
|
|
|
|
static function getNeed(){
|
|
$r = self::select($q = [
|
|
\Query::TABLES => self::$table_name,
|
|
\Query::WHERE=>
|
|
new \Where(\Where::_and([
|
|
\Where::_operator(LangValue::$LANG,'=',\Config::$LANG_ID),
|
|
\Where::_in(self::$TEXT_ID,array_keys(self::$need)),
|
|
])),
|
|
\Query::LEFT_JOINS=>[ [ LangValue::$table_name,LangValue::$VARIABLE,self::$ID ] ]
|
|
],false);
|
|
//echo new \Query($q);
|
|
while($l = \DB::fetch($r)){
|
|
self::$needBase[self::wrapVar($l[self::$TEXT_ID])] = str_replace('"','\"', $l[LangValue::$VALUE]);
|
|
}
|
|
}
|
|
|
|
static $need = [];
|
|
static $needBase = [];
|
|
|
|
static function wrapVar($x){
|
|
return "%LANG%".$x."%LANG%";
|
|
}
|
|
static function get($x){
|
|
$wrap = self::wrapVar($x);
|
|
self::$need[$x] = $wrap;
|
|
return $wrap;
|
|
//if(!self::$base) { self::init(); }
|
|
//return self::$base[$x][LangValue::$VALUE];
|
|
}
|
|
static function add($values,$isUpdate = false){
|
|
$res = new \stdClass();
|
|
$res->e = 0;
|
|
$res->m = '';
|
|
$val = static::getByTextID($values[ static::$TEXT_ID ]);
|
|
if(!$val) {
|
|
$r = static::insert($values);
|
|
$res->id = $r->id;
|
|
} else {
|
|
$res->id = $val[static::$ID];
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
|
|
static function columnInfo() : array {
|
|
return [
|
|
new C([
|
|
C::VAR_NAME =>&self::$ID,
|
|
C::TYPE =>eColumnType::INT,
|
|
C::AUTO_INCREMENT =>true,
|
|
C::PRIMARY =>true,
|
|
C::DEFAULT =>0,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME =>&self::$TEXT_ID,
|
|
C::TYPE =>eColumnType::VARCHAR,
|
|
C::LENGTH =>63,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME =>&self::$NAME,
|
|
C::TYPE =>eColumnType::VARCHAR,
|
|
C::LENGTH =>127,
|
|
]),
|
|
];
|
|
}
|
|
}
|