MySQLi Bulk Готовые выписки на большом сайте?

Я копался в стеке и на множестве других сайтов, ища лучший ответ на мои вопросы.

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

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

  • Я смотрю на то, чтобы сделать около 50 подготовленных заявлений, используемых на почти 200 различных страницах. Есть ли рекомендуемый способ сделать это? Все примеры, которые я видел, имеют дело с 1 или 2.
  • Из-за постоянно растущей природы сайта, использующего базы данных и тому подобное, одной из вещей, которые мне понравились в предыдущем mysql, является то, что он не требует подключения, указанного для каждого запроса, но делает это с mysqli. Мне пришлось настроить свои функции из-за этого. Есть ли рекомендуемое решение для этого?

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

1 ответ

Решение

Я постараюсь быть максимально точным, но я не эксперт.

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

    Подготовленные заявления, однако, разные. Они в основном означают "Разобрать один раз, выполнить много раз", но они не хранятся на сервере и не передаются через соединения.

    В PHP каждая "загрузка страницы" представляет собой отдельный поток со своими собственными переменными и, следовательно, со своими подключениями к базе данных, поэтому вы не можете снова использовать Prepared Statement.

  • Что касается вашего второго пункта, mysql_query() не требует передачи дескриптора соединения просто потому, что предполагается, что вы хотите использовать последнее созданное соединение.

Например:

mysql_connect();
mysql_query("SELECT * FROM table");

а также

$link = mysql_connect();
mysql_query("SELECT * FROM table", $link);

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

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

Другие вопросы по тегам