Подготовленное заявление только подготовлено однажды?

Связь с базой данных:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass,
               array(PDO::ATTR_PERSISTENT => true));

Подготовка заявления:

$stmt = $db->prepare('SELECT * FROM foo',
                     array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));

Заявление ИЗБРАННОЕ * ОТ foo только подготовленный однажды и затем сохраненный на сервере MySQL для всех последующих просьб Сценария PHP? Или это повторно подготовлено каждый раз, когда Сценарий PHP называют?

1
nl ja de

2 ответы

К сожалению, ответ не важен.

Даже если бы подготовленное заявление осталось подготовленным всюду по целой жизни постоянной связи, у PHP не было бы способа сослаться на него, как только текущий сценарий заканчивается. Учитывая, что ручка заявления вышла бы из объема в конечном счете так или иначе, возможности состоят в том, что, даже если заявление могло , сохраняются, это, вероятно, не делает. Это - предположение, но вероятно, что PDO моется после себя здесь.

Настоящая проблема - это PDO, by default, emulates prepared statements. Таким образом, это делает местную возможность избежать и замену заполнителей. Это означает, что сервер никогда не видит реальных , готовит, связывает и выполняет. Если вы хотите использовать реальный, готовится, выключите эмуляцию.

4
добавлено
Я предполагаю, что лучше готовлю заявление за пределами PDO, используя MySQL.
добавлено автор feklee, источник
Вы пишете: "PDO, по умолчанию, подражает подготовленным заявлениям". . Это, кажется, не имеет место (еще?). Согласно Руководство PDO: "PDO_MYSQL использует в своих интересах подготовленную поддержку заявления местного жителя, существующую в MySQL 4.1 и выше. Если you' ре используя более старую версию MySQL библиотек клиента, PDO будет подражать им для вас".
добавлено автор feklee, источник
В то время как that' s возможный, имейте в виду, что pconnect работает для каждого процесса . Если you' ре используя апача или FastCGI, каждый рабочий процесс получает it' s владеют независимой (постоянной) связью. Заявление подготовлено в одном worker' s связь won' t присутствовать в связях других. Пожалуйста, удостоверьтесь, что вы - not' t участвующий в микрооптимизации здесь. MySQL не продвинутая база данных с хорошим планировщиком вопроса и не значительно извлекает выгоду из снова использованных подготовленных заявлений таким же образом, что другие базы данных привыкли для.
добавлено автор Charles, источник
@feklee, that' s тонкая ложь документацией. Посмотрите Ошибка PHP № 61969 (зафиксируйте докторов), и ошибка № 54638 (зафиксируйте внедрение), а также сопровождающее обсуждение php-внутренностей.
добавлено автор Charles, источник

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

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

1
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp