dakata__92
Super Moderator
Здравейте. Можем ли да оптимизираме кода да работи по-бързо и надеждно?
PHP:
private function checkBadWords(): bool
{
$message = $this->smsInfo['message'];
if ($this->user->checkMessage() == 0 || empty($message)) {
return false;
}
$sql = "SELECT * FROM badWords";
$cacheKey = 'BAD-WORDS-' . md5($sql);
$badWordsArray = MC::get($cacheKey, 1);
if (!is_array($badWordsArray)) {
$badWordsArray = [];
$query = db::query($sql);
if ($query->num_rows > 0) {
while ($row = $query->fetch_assoc()) {
$caseInsensitiveWord = mb_strtolower($row['word']);
$badWordsArray[$caseInsensitiveWord] = $row['id'];
}
}
MC::set($cacheKey, $badWordsArray, MEMCACHE_COMPRESSED, 3600, 1);
}
if (count($badWordsArray) <= 0) {
return false;
}
$space = ' ';
$message = preg_replace('/\s+/u', $space, $message);
$messageWords = explode($space, trim($message));
foreach ($messageWords as $word) {
if (is_numeric($word) || mb_strlen($word) <= 2) {
continue;
}
$caseInsensitiveWord = mb_strtolower($word);
if (isset($badWordsArray[$caseInsensitiveWord])) {
return true;
}
}
return false;
}
Последно редактирано: