Метод validate
вашего JwtStrategy
будет вызываться только тогда, когда токен был проверен с точки зрения шифрования (для его подписи использовался правильный ключ, в вашем случае secretKey
), и срок его действия не истек. Только после того, как эти две вещи были проверены, вызывается validate
с полезной нагрузкой. С его помощью вы можете, например, проверьте, существует ли пользователь. Итак, три шага:
Вы можете использовать отладчик jwt , чтобы вручную проверить шаги 1 и 2 для вашего токена.
Это зависит. Если Ваш файл хранится локально в Вашем сервере, и база данных установлена в другой машине, то быстрее должен включать файл.
Buuuuut, потому что это зависит от Вашей системы, это могло быть не верно. Я предлагаю Вам сделать сценарий тестирования PHP и выполнить его 100 раз из командной строки и повторить тест через HTTP (использующий ЗАВИХРЕНИЕ)
Пример:
use_include.php
<?php
start = microtime(true);
include( 'somefile.php' );
echo microtime(true)-start;
?>
use_myphp.php
<?php
start = microtime(true);
__put_here_your_mysql_statements_to_retrieve_the_file__
echo microtime(true)-start;
?>
Включая файл должно почти всегда быть более быстрым. Если Ваша база данных находится на другой машине (например, в общем хостинге), или в установке мультисервера поиск должен будет сделать дополнительный переход.
Однако на практике различие, вероятно, не будет иметь значение. Если список будет динамичным затем хранение, то это в MySQL сделает Вашу жизнь легче. Статические списки (например, страны или состояния) могут быть сохранены в PHP, включают. Если список довольно короток (несколько сотен записей) и часто используемый, Вы могли бы загрузить его прямо в JavaScript и покончить с Ajax.
Если Вы идете путем MySQL и волнуетесь по поводу скорости, затем используют кэширование.
$query = $_GET['query'];
$key = 'query' . $query;
if (!$results = apc_fetch($key))
{
$statement = $db->prepare("SELECT name FROM list WHERE name LIKE :query");
$statement->bindValue(':query', "$query%");
$statement->execute();
$results = $statement->fetchAll();
apc_store($key, $results);
}
echo json_encode($results);
Разница во времени больше до проектирования системы, чем базовая техника, которую я смел бы говорить. И результат MySQL и файл могут кэшироваться в памяти и различии в производительности, там было бы настолько маленьким, это neglectable.
Вместо этого я спросил бы меня, каково различие в обслуживании будет. Вы, вероятно, будете когда-либо изменять данные? В противном случае просто вытолкайте его в простом файле. Вы вероятны битами изменений содержания очень часто? Если так, база данных является путем, легче управлять. То же самое для структуры данных, если этому нужна "реструктуризация", возможно, более эффективно поместить его в базу данных?
Так: Сделайте то, что Вы чувствуете, является самым удобным для Вас и будущего специалиста по обслуживанию кода и данных.:-)
Очень твердо/невозможно дать точный ответ, поскольку существует слишком много неизвестных переменных - что, если файловая система смонтирована на NFS, который находится с другой стороны мира? Или у Вас есть целая база данных MySQL в памяти. Размер базы данных должен быть включен в также.
Но на большем количестве примечания к ответу-y безопасное предположение было бы то, что MySQL быстрее, учитывая хорошие индексы, хорошая структура базы данных / нормализация и не также воображение/сложные запросы. Операции ввода-вывода являются всегда дорогими (чтение: медленный), в то время как, как ранее упомянуто, целый набор данных уже кэшируется в памяти MySQL.
Кроме того, я предполагаю, что Вы думали о выполнении дальнейшей обработки строк с теми включенными файлами, которая делает вещи еще более неприятными - я - алгоритмы поиска строки убежденного MySQL, намного лучше оптимизированы, чем, что Вы могли придумать в PHP.
Если это - что-то, что Вы собираетесь быть выбирающими регулярно, могло бы стоить выбрать данные с упреждением (от диска или базы данных, не имеет значения), и имейте свой сценарий, вытягивают его от кэша RAM как memcached.
У меня недавно была эта проблема. У меня были некоторые данные в mysql, который я запрашивал по каждому запросу страницы. Для моего набора данных это было быстрее для записи фиксированного рекордного файла длины, чем использовать MySQL.
Было несколько различных факторов, которые сделали файл быстрее, чем MySQL для меня:
Нижняя строка была то, что я сравнил его и сравнил результаты. Для моей рабочей нагрузки файловая система была быстрее. Я подозреваю, растет ли мой набор данных когда-нибудь, это изменится. Я собираюсь быть следящий за производительностью, и я готов измениться, как она работает в будущем.
определенно включайте, пока файл не является слишком большим, и Вы заканчиваете тем, что использовали слишком много памяти, в этом случае, база данных была бы рекомендована
Чтение в необработанных данных к сценарию из файла обычно будет быстрее, чем от базы данных.
Однако это кажется, что Вы желаете запросить те данные, чтобы найти, что соответствие возвращается к JavaScript. Можно найти в этом случае, что MySQL будет быстрее для фактических запросов/поиска данных (особенно, если правильно индексировано и т.д.), поскольку это - что-то, к чему база данных способна.
Чтение в большом файле также менее масштабируемо, поскольку Вы будете использовать много памяти сервера, в то время как сценарий выполняется.
Почему бы не это оба пути и видеть, который быстрее? Оба решения довольно тривиальны.
Если Вы ожидаете, что количество условий станет больше позднее, Вы - более обеспеченный MySQL использования с полем полнотекстового поиска.
Я точно не знаю, но в моем opinio использование MySQL, даже если может быть медленнее, должен использоваться, если контент динамический. Но я вполне уверен, это быстрее для большого содержания, использование включают.
Если Вы используете кэш байт-кода PHP как APC, или Xcache, включая файл, вероятно, будет быстрее. Если Вы используете PHP, и Вы хотите производительность, кэш байт-кода является абсолютно требованием.
Это кажется на рассмотрение имеющих в наличии статических данных в Сценарии PHP, который Вы включаете, чтобы не поражать базу данных. Вы в основном делаете элементарный кэш. Это может работать хорошо, пока у Вас есть некоторый способ обновить тот файл, если/когда данные действительно изменяются. Вы могли бы также посмотреть, хотят учиться о MySQL Query Cache делать SQL-запросы против статических данных быстрее. Или Memcached для хранения статических данных в памяти.