![]() |
|
|
![]()
|
|
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
У меня в винде используется апач как часть программы (остальное написано на С++Билдере, устроено так: прога на C++ иногда по мере необходимости обращается к апачу как браузер через локалхост и php скрипты выполняют то, что попросили).
Все работает, но подглючивает оттого, что приоритеты у Сшной части и апача одинаковые, а жрут они оба много. Исправляется это тем, что вручную меняется приоритет апача на высокий, и тогда работает нормально. Но вот беда: это работает если только вручную в таксманагере приоритеты менять. Заметьте, что когда запущен один апач сервис, то в такс манагере два процесса по имени апач. Насколько я понял, главный процесс - тот, который идентифицирется по имени сервиса - он главный и он ничего не делает, просто запускает дочерний, которого и заставляет работать. И если я пытаюь автоматически в сишной программе изменить приоритет (я узнаю id по имени апач сервиса и по пиду меняю приоритет), то если посмотреть в такс манагере - приоритет изменился только у одного из двух апач процессов. А когда проверяю как работает - то вижу, что именно тот процесс, который не поменял приоритет - именно он и загружается! То есть хоть я и поменял приоритет, это не помогает, потому что не тому меняю! И как же узнать пид второго апач процесса? Просто перебрать все процессы по имени апач нельзя, вдруг у чела уже установлен другой апач (я-то свой ставлю как сервис под своим уникальным именем и слушаю на своем порту, так что это не помешает человеку использовать свой апач, если он, например, разработчик сайтов, он даже не заметит что еще один апач работает). Может нам первый апач процесс может рассказать пид своего дочернего? как у него спросить? Может из php можно узнать пид второго? --------------------
|
|||
|
||||
| ZeeLax |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4388 Регистрация: 20.8.2006 Где: Алма-Ата Репутация: 2 Всего: 88 |
Тогда, это не часть программы. А может, стоит пересмотреть схему? Неужели для этого так необходим апач и php? Добавлено @ 18:13 И вообще, на оффтопик похоже. -------------------- Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none. — Doug Larson |
|||
|
||||
| szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
Да, уже вся прога постоена, использовать апач очень нужно.
вот такая тема... не знал куда постить ))) --------------------
|
||||
|
|||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Глупости какие А запускается апач кем? Может в старте сервиса подправить нужный приоритет. Схема работы такая (думая на винде не должно ничего сильно изменяться). Запускается главный сервис, который на кажый коннект запускает дочерний процесс. Имя у процесса будет такое же. Видимо твоя прога неправильно ищет процесс чтоб поднять приоритет и вместо главного сервиса, находит порожденный им. Еще можно порыться в исходниках - они открытые. |
|||
|
||||
| szz |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
Наоборот - прога находит и меняет главный (именно пид главного возвращается при запросе по имени сервиса), но не дочерний, а надо дочерний, так как именно он выполняет всю работу.
Дочерний один и тот же постоянно, возможно потому что у меня один коннект - от локалхоста. Если бы знать все пиды всех дочерних... Мож какой-то запрос в командной строке, типа "apache.exe --list_child_processes_pids"? должно ж быть что-то такое... В исходниках порылся кстати сегодня - хрен что поймешь, проект огромный, я даже функцию main() найти не могу ))))) А разобраться, найти точки порождения дочерних процессов - это уж выше моих сил ))) Добавлено @ 01:19
Моей прогой-инсталлятором. Инсталлятор ставит прогу (ну, спрашивает куда, все как обычно), а в конце с помощью ВинАПИ незаметно ставится апач, прописывается в хттпд.конф вся инфа (документ рут, порт для прослушки и т.д), потом запускается под уникальным именем сервиса.
И он всех своих дочерей запускать будет в заданном приоритете? Именно это и нужно! Как это сделать??? Я в винАПИ не нашел как при запуске сервиса указывать ему приоритет. Даже в окне "Службы" нет никаких намеков на управление приоритетами... --------------------
|
||||||
|
|||||||
| DENNN |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Апач хранит в своем файлике пиды всех запущенных потомков. Может в винде и не так, но я сомневаюсь. Почитай на эту тему его документацию и исходники.
Именно так. Да, потомки, насколько я помню, унаследуют приоритет родителя. |
||||
|
|||||
| szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
Я спросил на apachelounge.com, мне там быстро ответили ))) оказывается решение просто
Переведу если кто с подобным столкнется:
"убей его" - автор имел ввиду наверное "сделай что хочешь", например измени приоритет, так как пид теперь я получу запросто от обоих процессов просто по имени процесса MyCoolApache.exe (или любое другое уникальное название), что и ребовалось доказать --------------------
|
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |