У меня есть функция перенаправления на моем собственном веб-сайте, где пользователи перенаправляются на сайты, занесенные в белый список и включенные переадресацией.
в качестве примера, если 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 (сохранить массив в течение нескольких запросов), соответствующий этому сценарию …
Если вам нужно сохранить массив на несколько запросов, посмотрите:
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/
Я просто предполагаю, что вам нужно что-то вроде этого:
$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), чтобы использовать будущие параметры.
Если этот список станет слишком большим, поддерживать его будет сложно.
Я предлагаю вам иметь базу данных для управления ею и автоматически создавать из нее статический файл.