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);
подобные.
Таким образом, использование соединения неявно не означает масштабируемость.
Это все, что я могу написать, не предоставляя, возможно, неверную информацию, поэтому я настоятельно рекомендую вам действительно прочитать об этом, и тогда, если у вас возникнут вопросы, все здесь будут рады ответить.