[php+mysql] Несколько ламерских вопросов.
Насколько я понимаю, там на каждый поток создаётся своё подключение...
там на каждый поток создаётся своё подключение...
что за потоки?
Что, с ним (apache) pconnect не имеет смысла использовать? - неверю! )
но просветления не дало
Ну в смысле, вроде я все понимаю правильно (ответы на первые два вопроса но все равно работает не так, как я понимаю.
для каждого p_connect (с разными параметрами) живет по ~15 процессов, при этом большая часть спит.
Может это все нормально, но про то, что процессов для p_connect будет несколько - нигде не написано.
Еще вопрос: что будет, если php понадобиться выполнить одновременно 30 разных запросов через один pconnect?
ни разу не слышал, чтобы mysql умел одновременно несколько запросов от одного соединения отрабатывать
Может умный модуль php что даже для pconnect надо зарезервировать пару десятков соединений...
Мозг включи, сразу всё понятно станет.
Что, с ним (apache) pconnect не имеет смысла использовать? - неверю! )имеет.
Создаётся по одному коннекту на каждый поток, и больше никуда подключаться не надо.
На пальцах: допустим, у твоего апача в конфиге сказано, что надо исплоьзовать 20 потоков; каждый твой запрос к веб-серверу перекидывается на свободный поток, если такой есть; или становится в очередь, ожидая завершения уже обрабатываемых запросов; соответственно, в каждом потоке в каждый момент времени обрабатывается только один запрос к веб-серверу, выполняется только один скрипт, который и делает (последовательно) какие-то запросы к БД. Таким образом, если ты решил зафлудить сервер, и отправил 1000 запросов - первые 20 займут своббодные потоки, установят соединение, будут отправлять запросы к БД; когда какой-то из этих скриптов отработает, какой-то запрос из очереди встанет на его место - и ему не надо будет устанавливать новое соединение, он будет использовать то, что осталось от его предшественника.
Мозг включи, сразу всё понятно станет.
И зачем ты это написал?
Cпасибо!
Оставить комментарий
SCIF32
Заранее попрошу не закидывать меня камнями.1. PHP установлен как модуль.
Правильно ли я понимаю, что когда пользователь обращается к странице типа index.php,
то скрипт выполняется на стороне модуля?
Можно ли как-нибудь проверить - выполняется скрипт на стороне модуля, или как отдельный cgi.
И будет ли влиять выполнение на стороне модуля на значения глобальных переменных, если они используются?
2.Правильно ли я понимаю, когда php установлен как модуль, mysql_pconnect должен отдавать указатель на постоянное соединение с базой, при этом пользоваться только одним соединением (подразумевается что имя, порт и хост постоянные!) и не плодить процессы со стороны mysqld?
3. Я установил php как модуль и пользуюсь mysql_pconnect
по каким причинам (выдает SHOW FULL PROCESSLIST\G ) в mysql могут плодится процессы - может ли быть так, что одному соединению выделяется несколько процессов?
4. В таблице SHOW FULL PROCESSLIST большая часть процессов выполняет команду sleep. - как это понимать?