Что более быстро; включая другой файл или запросы базы данных MySQL в PHP?

Метод validate вашего JwtStrategy будет вызываться только тогда, когда токен был проверен с точки зрения шифрования (для его подписи использовался правильный ключ, в вашем случае secretKey), и срок его действия не истек. Только после того, как эти две вещи были проверены, вызывается validate с полезной нагрузкой. С его помощью вы можете, например, проверьте, существует ли пользователь. Итак, три шага:

  1. Токен был подписан вашим секретным ключом
  2. Токен не истек
  3. Проверка пользовательской полезной нагрузки

Вы можете использовать отладчик jwt , чтобы вручную проверить шаги 1 и 2 для вашего токена.

8
задан Philip Morton 3 October 2008 в 10:30
поделиться

12 ответов

Это зависит. Если Ваш файл хранится локально в Вашем сервере, и база данных установлена в другой машине, то быстрее должен включать файл.

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;

?>
14
ответ дан 5 December 2019 в 07:37
поделиться

Включая файл должно почти всегда быть более быстрым. Если Ваша база данных находится на другой машине (например, в общем хостинге), или в установке мультисервера поиск должен будет сделать дополнительный переход.

Однако на практике различие, вероятно, не будет иметь значение. Если список будет динамичным затем хранение, то это в 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);
4
ответ дан 5 December 2019 в 07:37
поделиться

Разница во времени больше до проектирования системы, чем базовая техника, которую я смел бы говорить. И результат MySQL и файл могут кэшироваться в памяти и различии в производительности, там было бы настолько маленьким, это neglectable.

Вместо этого я спросил бы меня, каково различие в обслуживании будет. Вы, вероятно, будете когда-либо изменять данные? В противном случае просто вытолкайте его в простом файле. Вы вероятны битами изменений содержания очень часто? Если так, база данных является путем, легче управлять. То же самое для структуры данных, если этому нужна "реструктуризация", возможно, более эффективно поместить его в базу данных?

Так: Сделайте то, что Вы чувствуете, является самым удобным для Вас и будущего специалиста по обслуживанию кода и данных.:-)

3
ответ дан 5 December 2019 в 07:37
поделиться

Очень твердо/невозможно дать точный ответ, поскольку существует слишком много неизвестных переменных - что, если файловая система смонтирована на NFS, который находится с другой стороны мира? Или у Вас есть целая база данных MySQL в памяти. Размер базы данных должен быть включен в также.

Но на большем количестве примечания к ответу-y безопасное предположение было бы то, что MySQL быстрее, учитывая хорошие индексы, хорошая структура базы данных / нормализация и не также воображение/сложные запросы. Операции ввода-вывода являются всегда дорогими (чтение: медленный), в то время как, как ранее упомянуто, целый набор данных уже кэшируется в памяти MySQL.

Кроме того, я предполагаю, что Вы думали о выполнении дальнейшей обработки строк с теми включенными файлами, которая делает вещи еще более неприятными - я - алгоритмы поиска строки убежденного MySQL, намного лучше оптимизированы, чем, что Вы могли придумать в PHP.

2
ответ дан 5 December 2019 в 07:37
поделиться

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

1
ответ дан 5 December 2019 в 07:37
поделиться

У меня недавно была эта проблема. У меня были некоторые данные в mysql, который я запрашивал по каждому запросу страницы. Для моего набора данных это было быстрее для записи фиксированного рекордного файла длины, чем использовать MySQL.

Было несколько различных факторов, которые сделали файл быстрее, чем MySQL для меня:

  1. Размер файла был небольшим - менее чем 100 КБ текстовых данных
  2. Я случайным образом выбирал и не искал - индексы не имели никакого значения
  3. Время соединения - открытие файла и чтение его в были быстрее, чем соединение с базой данных, когда загрузка сервера была высока. Это было особенно верно, так как ОС кэшировала файл в памяти

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

1
ответ дан 5 December 2019 в 07:37
поделиться

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

0
ответ дан 5 December 2019 в 07:37
поделиться

Чтение в необработанных данных к сценарию из файла обычно будет быстрее, чем от базы данных.

Однако это кажется, что Вы желаете запросить те данные, чтобы найти, что соответствие возвращается к JavaScript. Можно найти в этом случае, что MySQL будет быстрее для фактических запросов/поиска данных (особенно, если правильно индексировано и т.д.), поскольку это - что-то, к чему база данных способна.

Чтение в большом файле также менее масштабируемо, поскольку Вы будете использовать много памяти сервера, в то время как сценарий выполняется.

0
ответ дан 5 December 2019 в 07:37
поделиться

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

0
ответ дан 5 December 2019 в 07:37
поделиться

Если Вы ожидаете, что количество условий станет больше позднее, Вы - более обеспеченный MySQL использования с полем полнотекстового поиска.

0
ответ дан 5 December 2019 в 07:37
поделиться

Я точно не знаю, но в моем opinio использование MySQL, даже если может быть медленнее, должен использоваться, если контент динамический. Но я вполне уверен, это быстрее для большого содержания, использование включают.

-3
ответ дан 5 December 2019 в 07:37
поделиться

Если Вы используете кэш байт-кода PHP как APC, или Xcache, включая файл, вероятно, будет быстрее. Если Вы используете PHP, и Вы хотите производительность, кэш байт-кода является абсолютно требованием.

Это кажется на рассмотрение имеющих в наличии статических данных в Сценарии PHP, который Вы включаете, чтобы не поражать базу данных. Вы в основном делаете элементарный кэш. Это может работать хорошо, пока у Вас есть некоторый способ обновить тот файл, если/когда данные действительно изменяются. Вы могли бы также посмотреть, хотят учиться о MySQL Query Cache делать SQL-запросы против статических данных быстрее. Или Memcached для хранения статических данных в памяти.

0
ответ дан 5 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: