[php+mysql] Несколько ламерских вопросов.

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. - как это понимать?

kruzer25

У тебя апач?
Насколько я понимаю, там на каждый поток создаётся своё подключение...

SCIF32

да, апач
там на каждый поток создаётся своё подключение...

что за потоки?
Что, с ним (apache) pconnect не имеет смысла использовать? - неверю! )

SCIF32

Это я, конечно, прочитал,
но просветления не дало
Ну в смысле, вроде я все понимаю правильно (ответы на первые два вопроса но все равно работает не так, как я понимаю.

SCIF32

Сейчас вручную мониторю процессы в mysqld - ситуация такова, что
для каждого p_connect (с разными параметрами) живет по ~15 процессов, при этом большая часть спит.
Может это все нормально, но про то, что процессов для p_connect будет несколько - нигде не написано.
Еще вопрос: что будет, если php понадобиться выполнить одновременно 30 разных запросов через один pconnect?

Marinavo_0507

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

SCIF32

Аналогично, это меня и смущает.
Может умный модуль php что даже для pconnect надо зарезервировать пару десятков соединений...

Marinavo_0507

Мозг включи, сразу всё понятно станет.

kruzer25

Что, с ним (apache) pconnect не имеет смысла использовать? - неверю! )
имеет.
Создаётся по одному коннекту на каждый поток, и больше никуда подключаться не надо.

kruzer25

На пальцах: допустим, у твоего апача в конфиге сказано, что надо исплоьзовать 20 потоков; каждый твой запрос к веб-серверу перекидывается на свободный поток, если такой есть; или становится в очередь, ожидая завершения уже обрабатываемых запросов; соответственно, в каждом потоке в каждый момент времени обрабатывается только один запрос к веб-серверу, выполняется только один скрипт, который и делает (последовательно) какие-то запросы к БД. Таким образом, если ты решил зафлудить сервер, и отправил 1000 запросов - первые 20 займут своббодные потоки, установят соединение, будут отправлять запросы к БД; когда какой-то из этих скриптов отработает, какой-то запрос из очереди встанет на его место - и ему не надо будет устанавливать новое соединение, он будет использовать то, что осталось от его предшественника.

SCIF32

Мозг включи, сразу всё понятно станет.

И зачем ты это написал?

SCIF32

Теперь все сложилось в единую картину.
Cпасибо!
Оставить комментарий
Имя или ник:
Комментарий: