Pull to refresh

Comments 54

Ну когда же вы научитесь пользоваться хабракатом
Извиняюсь, опять пробел вставил случайно в habracut - всего лишь во второй раз :). Но я тут же испрвился - просто у меня сейчас коннект очень слабенький и мееееедленный.
UFO landed and left these words here
Это такая форма самовыражения? Если что, то смею вас заверить, то жеки никак не связаны ни с PHP, ни с IIS :)
вот и иди в свою жежешечку, дружище.
Чего тут забыл?
Спасибо, подробно описано, если вдруг понадобится - воспользуюсь :)
На работе использую связку PHP (ZF)+Apache+MS SQL (через PDO MSSQL)... Особых проблем не встречали ;)
А драйвер SQL Server для PHP еще не используете? Производительность по моим тестам на порядок выше.
Виндовс становиться лучше в плане серверной ОС. Есть о чем задуматься.
Но пока доверить раздавать контент не unix системе как то страшно. (ИМХО)
>Виндовс становиться лучше в плане серверной ОС.
Они в 2008 только доабавили некоторые фичи, которые а apache есть давным давно. В принципе IIS довольно гибко настраивается через appcmd, но вечно приходится какие-то костыли делать.
Вот цитатка от сюда http://dmih.livejournal.com/ :

Продолжаем вести с полей,
IIS 7,
один процесс - 600 мб, другой процесс - 900 мб, менеджер IIS в запущенном виде - 600 мб. Постоянная дисковая нагрузка от перекладываний метабазы с места на место.
Это помимо рабочих процессов, где скрипты выполняются, которые тоже, надо заметить, неадекватного размера, по сравнению с IIS 6 на статистически тех же ASP.NET сайтах.

По-моему очень круто.
Едем дальше, ждите новых сводок.

Ах, да, нагрузка сервера - 15% от полной планируемой. Если этот пи%дец не заставит её снизить.

В общем лучше он не становится, и даже задумываться не надо.
Мотивы автора топика вполне понятны, а вот запускать в продакшен по настоящему убогий продукт, который ещё и стоит бешеных денег - глупость и удел не грамотных недоспецов, которым мозги промыли менеджеры.
Позволю себе не согласится, лучше стало с точки зрения фич и с точки зрения производительности. Ребята, которые отвечают за microsoft.com после миграции еще на beta 3 Windows Server 2008 отметили неслабый прирост производительности: http://blogs.technet.com/mscom/archive/2…
На слово верить не призываю. Если сделаете и опишите независимые тесты, буду очень признателен.
Ну, не скажите. По статистике порядка 35% серверов на IIS: http://news.netcraft.com/archives/2008/0…
И давно на нем работали. При этом работали они на старом IIS, который вообще как сервер был очень плох, если подумать с современной точки зрения. Пожалуй, IIS6 был первым более-менее приличным сервером.
...если не брать в расчет апач, конечно.
Apache очень классный проект и классынй сервер, с этим я согласен. Есть, конечно, некоторые вещи, которые мне не нравятся и которые лучше реализованы в IIS, аналогично и наоборот. Именно поэтому мы теперь Apache поддерживаем: http://www.cybersecurity.ru/news/52081.h… :)
вы конечно молодцы, постоянно вносите улучшения, но... НО :)

первое, что надо сделать - убрать лимит в 64 соединения в WaitForMultipleObjects. именно этот лимит, а также не похожие ни на что I/O Completion Ports, затрудняют портирование кучи unix-приложений, построенных по FSM-архитектуре.

Ну или добавить I/O Completion Ports в libevent - хотя я себе трудом представляю, как такое вообще получится.
Да, есть такая проблема с портированием. Но с WaitForMultipleObjects можно лочить один объект и использовать собственные статус коды для синхронизации доступа, т.е. один объект вполне может быть релеем сообщений.
На счет Completion Ports, я не копался, но нужно посмотреть, как с ними обстоят дела в Windows Server 2008.
да это понятно что можно, но и вы думаю понимаете. вот я пишу одну софтину, конкретика тут не суть важна, имеет значение что она взаимодействует с фронтендом по fastcgi, и рассчитана на обработку сотен одновременных соединений. пишется с расчетом на возможный выпуск в опенсорс (иначе бы вообще ограничился bsd), потому проверяю в freebsd/linux/macosx, теоретически работоспособно в solaris. если для винды будет достаточно местами понатыкать #ifdef WIN32 с парой строчек - почему бы и нет. а с этими всеми запарками - банально влом. ;)
UFO landed and left these words here
Я за .NET обеими руками. Однако, на PHP разработано огромное количество замечательных приложений. Зачем их переписывать, если можно их использовать. Более того, через HttpModule / HttpHandler можно добавлять функциональность уже средствами ASP.NET, когда это целесообразно.
А почему вы ставите PHP как CGI? Если ставит как модуль ISAPI производительность PHP выше. Покрайней мере так показаваи внутренние тесты у нас в компании.
С этого момента поподробнее. Опишите, пожалуйста тесты. Если не затруднит, напишите мне на gaidar.magdanurov @ microsoft.com. Дело в том, что FastCGI модуль был специально вместе с Zend разработан для PHP, чтобы увеличить производительность и по любым тестоам, которые я лично делал, получается на порядок выше скорость обработки запросов.
Тут не так давно проскакивала тема на счет PHP и FastCGI в которой согласно тестам утверждалось, что FastCGI не такой уж и быстрый, в силу своей реализации для PHP. Поищите в куроводстве и наблах у dklab-овцев.

Хотя вот, я вам даже прямую ссылку нашел http://dklab.ru/chicken/nablas/49.html - Оптимизируем загрузку PHP-кода в 22 раза, или почему FastCGI не ускоряет PHP
в набле рассматривается апач, да и то там написано что экономится один форк. а учитывая что мелкомягкие сами помогали оптимизировать именно этот режим, то он должен быть немного быстрее, а главное гибче.
Эм. Если вы внимательно почитаете, то увидите, что там написано о FastCGI режиме. И что PHP этот режим реализован не так как надо.
то, что это не настоящий cgi не обозначает что он должен работать медленнее. тем более это iis, а не apache
FastCGI одинаково работает что с IIS что с apache. В случае же PHP использование FastCGI по сути экономит только один форк и все.
Речь идет несколько о другом. FastCGI модуль для PHP под IIS7 делает простую вещь - несколько запросов обрабатываются в одном процессе. Если без него использовать, то на каждый запрос поднимается отдельный процесс, а процессы в Windows вещь дорогая, в отличие от Unix (зато треды в Windows дешевые :)).
хотя, что касается псевдоэкономии "на форке" - вот как раз в windows экономия значительная - т.к. там не fork, а действительно жырный CreateProcessEx :)
Ага. Вы оттуда :] Значит ответите мне на простой вопрос. Почему выбрана модель которая работает с процессами, а не потоками? Наскольк я помню потоки в Windows куда дешевле создавать нежели процессы.
Перенести все в треды сложно, поскольку у процессов есть одно хорошее преимущество - изоляция друг от друга. Оптимизация в процессной модели - максимально использовать один процесс и в нем работать с большим количеством запросов, она и используется.
Каким образом она используется если в PHP нет нормальной реализации FastCGI? Экономией на порождении процесса?
Да, именно так. Раньше было вообще ужас - на каждый запрос порождался новый процесс. Сейчас FastCGI для IIS отвечает за безопасность тредов и позволяет в одном процессе обработать много запросов.
А не проще дать линк на http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis7/ и не мучить мозг переводами?

По-моему для нормального айтишника английский — второй родной.
Во-первых, далеко не для всех читать на английском просто. Во-вторых, это не просто перевод статьи Михаила Володарского, а расширенная версия, можете сравнить.
Противно было даже думать об этой статье, после прочтения аннотации. Вы хотите нас загипнотизировать частым повторением "IIS" и "Windows" или это просто SEO-текст со слегка полезным материалом?..
Немного коряво аннотация получилась, но как еще называть платформу Windows и сервер IIS? :)
Ну можно было как-то заменить синонимами :) ОС от майкрософт, окна, "на этом http-сервере" и т.п. :)

Или например:
На сайте http://www.iis.net можно найти список популярных PHP приложений с инструкциями по установке на IIS. Для их запуска на IIS не требуется изменения PHP кода.

"+" за адекватное отношение к резкой критике :)
Я люблю критику, особенно когда она конструктивна. А за советы - спасибо. Действительно очень коряво написал. Буду исправляться.
Сам использую Apache/Linux и врядли ц него когда-нибудь уйду. Что, однако, не отменяет факта, что при наличии прямых рук и с IIS можно построить реалъно мощное решение:

http://highscalability.com/plentyoffish-architecture:
- PlentyOfFish (POF) gets 1.2 billion page views/month, and 500,000 average unique logins per day. The peak season is January, when it will grow 30 percent.
- POF has one single employee: the founder and CEO Markus Frind.
- Makes up to $10 million a year on Google ads working only two hours a day.
- 30+ Million Hits a Day (500 - 600 pages per second).
- 1.1 billion page views and 45 million visitors a month.
- A top 30 site in the US based on Competes Attention metric, top 10 in Canada and top 30 in the UK.
- 2 load balanced web servers with 2 Quad Core Intel Xeon X5355 @ 2.66Ghz), 8 Gigs of RAM (using about 800 MBs), 2 hard drives, runs Windows x64 Server 2003.
- 3 DB servers. No data on their configuration.
etc
Обещали на Ремиксе коробочку с Windows Web Server прислать, никак не дождемся.
Эх.. У меня коллеги уже извелись разборками с таможней, чтобы эти коробочки провезти. Сейчас точно не скажу, но вроде бы процесс уже прошел и должны были начать рассылать. Если критично получить коробочку как можно быстрее - напишите мне, я узнаю, что там по срокам доставки.
Quercus: PHP in Java
http://www.caucho.com/resin-3.0/quercus/
- кроссплатформенно и быстрее FastCGI раз в шесть.
Интересно.
Занес в избранное.
Может когда-нибудь пригодиьтся. :)
Что за дела с UTF-8 кодировкой в URL'ах?
Запрашиваю /index.php/àáâäя

Приходит одна «я», причем в кодировке windows-1251
[REQUEST_URI] => /index.php/???? я

В web.config прописано
[configuration][system.web][globalization requestEncoding=«utf-8» responseEncoding=«utf-8» /]…

IIS7 x64 Vista Business SP1
tty01 — давайте разберемся. Можете прислать архив веб-сайта, который вы тестируете?
Уважаемый Гайдар, «архив» весьма прост:

<? php
header('Content-type: text/plain; charset=utf-8');
echo «REQUEST_URI = », $_SERVER['REQUEST_URI'], "\n", «QUERY_STRING = », $_SERVER['QUERY_STRING'];
? >

Запрос `/index.php/я` возвращает `REQUEST_URI = /index.php/я` в кодировке windows-1251
Запрос `/index.php/兀я` возвращает `REQUEST_URI = /index.php/? я` в кодировке windows-1251

Можно запросить `/index.php/%D1%8F` или `/index.php/%E5%85%80%D1%8F` — результат тот же.
Спасибо, постараюсь непосредственно в понедельник протестировать.
команда
IIS работает над тем, чтобы PHP
работал на Windows не хуже, чем на
Unix/Linux

Но пока у них не получается

Only those users with full accounts are able to leave comments. Log in, please.