Я арендовал VPS-сервер и на нем работает мой сайт.
Чтобы увеличить пропускную способность, я решил перейти на более мощный сервер. (характеристики указаны ниже)
Старый сервер:

- ЦП: 4 ядра
- ОЗУ: 6 ГБ
- Жесткий диск: 165 ГБ

- ЦП: 12 ядер
- ОЗУ: 24 ГБ
- Жесткий диск: 295 ГБ
Выполнил профилирование на обоих серверах с помощью xdebug.
В результате при анализе результатов выяснилось, что функция md5 на старом сервере срабатывает за 2 мс, а на новом сервере за 10 мс.
Поскольку эта функция используется в процессе локализации текста сайта на другие языки, эта возможность замедляет загрузку всех стран в ~5 раз
Ниже приведена функция, в которой вызывается функция md5:
Код: Выделить всё
function __($key = ''){
if(get_session('language')){
$language = get_session('language');
}else{
if(!get_user("language")){
$code = get_user("language");
$language = db_get("*", TB_LANGUAGE_CATEGORY, ["code" => $code]);
if(empty($language)){
$language = db_get("*", TB_LANGUAGE_CATEGORY, ["is_default" => 1]);
}
}else{
$language = db_get("*", TB_LANGUAGE_CATEGORY, ["is_default" => 1]);
}
$language = json_encode($language);
if(!empty($language)){
set_session(["language" => $language]);
}
}
if($language){
$language = is_string($language)?json_decode( $language ):$language;
if(isset($language->code)){
$lang_file = WRITEPATH."lang/".$language->code.".json";
if(file_exists($lang_file)){
$data = file_get_contents(WRITEPATH."lang/".$language->code.".json");
$data = json_decode($data, 1);
if(isset($data['data'])){
$data = $data['data'];
if($key != "" && isset($data[ md5($key) ])){
return $data[ md5($key) ];
}
}
}
}
}
return $key;
}

Новый сервер:

ВОПРОС: Суть вопроса в том, почему на новом сервере функция работает в 5 раз медленнее (за 10 мс, против 2 мс на старом сервере)
дополнение: Результаты в 2 мс и 10 мс относятся только к 1 вызову функции. А таких вызовов при загрузке страницы происходит более 50, что в итоге приводит к задержке у пользователя на 5 секунд.
Версии php на обоих сайтах: v8.0.26
$key =
По совету Саймона Готера, этот тест был выполнен: https://github.com/FastAsChuff/MD5-SIMD ... d5test.php
Результаты на старом сервере:

Результаты на новом сервере:

Подробнее здесь: https://stackoverflow.com/questions/792 ... fferent-se