база данных — создание статического массива php для хранения значений

У меня есть функция перенаправления на моем собственном веб-сайте, где пользователи перенаправляются на сайты, занесенные в белый список и включенные переадресацией.

в качестве примера, если URL пользователя

mydomain.ridirect.com/rdrct?site=www.goog.com

Теперь соответствующий сценарий выполняет вызов базы данных, а в базе данных — таблица для проверки доменов, занесенных в белый список, а также сообщает, разрешено ли перенаправление имени домена.

id  domain_name  redirect
1   www.yah.com  1
2   www.go.com   0
3   www.goo.com  1
4   www.foo.com  1

Теперь пример пользователя будет перенаправлен, так как он включен в белый список и перенаправление.

Теперь проблема заключается в том, что этот проект довольно дорогой в живом исполнении. Большую часть времени он занимает много времени. каждый раз, когда пользователь приходит, он делает вызов БД.

Поэтому теперь я объявляю массив до вызова базы данных,

$redirect = array();

если это правильное имя домена в соответствии с его критериями, значения будут добавлены в вышеуказанный массив

array_push($redirect, $trusted_domain, $id, $row["redirect"]);
var_dump($redirect);

поэтому мой дизайн таков: если пользователь снова введет те же доменные имена, он не будет выполнять вызов db, вместо этого он продолжит работу массива.

поэтому кто-нибудь может мне помочь создать массив Staic (сохранить массив в течение нескольких запросов), соответствующий этому сценарию …

1

Решение

Если вам нужно сохранить массив на несколько запросов, посмотрите:

APC
http://php.net/manual/en/book.apc.php

APCU
Пожалуйста, используйте apcu для более новых версий PHP https://pecl.php.net/package/APCu как упомянуто в комментарии ниже.

Используя apc решение будет:
Чтобы добавить URL перенаправления в кеш после загрузки через. база данных, использующая apc_add и после этого использования apc_exists проверить, разрешен ли URL.

В качестве альтернативы вы можете попробовать использовать другое хранилище значений ключей, например http://redis.io/

0

Другие решения

Я просто предполагаю, что вам нужно что-то вроде этого:

$arr = array();
$arr['www.example.com'] = array('redirect' => true);
$arr['www.example2.com'] = array('redirect' => true);
$arr['www.example3.com'] = array('redirect' => false);

//and then on the request

if(isset($arr[$_GET['site']]) && $arr[$_GET['site']]['redirect']){
//redirect logic
}

Я использовал массив в ключе url (redirect => true), чтобы использовать будущие параметры.

Если этот список станет слишком большим, поддерживать его будет сложно.

Я предлагаю вам иметь базу данных для управления ею и автоматически создавать из нее статический файл.

-1

По вопросам рекламы [email protected]