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

1

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

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

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

теперь соответствующий сценарий вызывает вызов базы данных, а в db theres - таблицу для проверки белых списков, а также указывает, включено ли перенаправление домена

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

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

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

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

$redirect = array();

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

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

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

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

  • 3
    что вы подразумеваете под статическим массивом? вы хотите сохранить массив в течение нескольких запросов?
  • 0
    Это должен быть только один вызов SELECT в базе данных, верно? Если это слишком медленно, ваша база данных срочно требует некоторой оптимизации, например, некоторых индексов. На самом деле не должно быть никаких причин склоняться назад и превращать это в какой-то статический массив PHP, который необходимо поддерживать в актуальном состоянии.
Показать ещё 2 комментария
Теги:
database
url-redirection

2 ответа

0

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

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/

  • 2
    Обратите внимание, что APC больше не поддерживается и не будет работать с текущими версиями PHP. Доступен пакет под названием APCu, который обеспечивает совместимую реализацию только функций кэширования переменных, но в дальнейшем лучше использовать memcache или Redis.
  • 0
    спасибо за примечание - я обновил ответ
-2

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

$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), чтобы разрешить будущие параметры.

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

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

  • 0
    спасибо плохо попробую это и посмотрим
  • 0
    Хотелось бы знать, почему понизить
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню