LINUX.ORG.RU

документация:

Thread Safety means that binary can work in a multithreaded webserver context, such as Apache 2 on Windows. Thread Safety works by creating a local storage copy in each thread, so that the data won't collide with another thread.

So what do I choose? If you choose to run PHP as a CGI binary, then you won't need thread safety, because the binary is invoked at each request. For multithreaded webservers, such as IIS5 and IIS6, you should use the threaded version of PHP.

nguseff
()
Ответ на: комментарий от nguseff

Вот как бы в чём вопрос. Везде упоминают Windows для Thread Safety.

А что под линуксом например всё равно, что использовать с ПХП?

Или во фразе: Thread Safety means that binary can work in a multithreaded webserver context, such as Apache 2 on Windows. Вместо «Windows» можно подставить другую операционку?

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

под линуксом, на сколько я могу судить, всё равно.

Я ещё забыл упомянуть, что есть некоторые расширения, которые требуют Thread-safe сборку (например, pthreads), но их немного и я не слышал, чтобы их кто-то реально использовал.

nguseff
()
Ответ на: комментарий от Serg_HIS

Вместо «Windows» можно подставить другую операционку?

Да и нет. Дело в том, что апач под linux обычно работает в виде отдельных процессов, а не многопоточно, и это общая практика в unix-системах, классика, а «such as Apache 2 on Windows» это именно особый случай, когда апач работает только многопоточно, такова специфика оффтопика, поэтому они его в пример и приводят. Но в принципе, можно и в linux запускать апач в многопоточном режиме.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Я может чего-то подзабыл... чем отличаются потоки от процессов на программном уровне? И как каждый из них переводится на английский? :-)

Serg_HIS
() автор топика
Ответ на: комментарий от no-such-file

Наверное имеется ввиду что мултипоточность - это когда каждый работает в своей виртуальной памяти и не имеет никакого доступа к другому (даже не знает о нем) за счет аппаратного i386 режима.

Serg_HIS
() автор топика
Ответ на: комментарий от no-such-file

Тогда не понятно какое имеет отношение к этому сам аппач. Хотя наверное я переставил местами потоки и процессы.

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

чем отличаются потоки от процессов на программном уровне

Тем что потоки работают в одном и том же адресном пространстве, а процессы - каждый в своём

Тогда не понятно какое имеет отношение к этому сам аппач

Тем что при множестве процессов, в рамках одного процесса программа однопоточна, пых запускается однопоточно и о других процессах ничего не знает, а threadsafe не нужен.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Я выше писал тоже самое и даже упоминал i386 protected mode (аппаратный режим разраничения адресных простарнств).

И да... как и Вы ошибся, потоки (threads), какраз таки в одном постранстве копошатся, а процессы (processes) - это вроде и есть уже разделённые аппаратно процессы.

В виндовсе вроде как сервисы называются, а в линуксе - демоны.

Serg_HIS
() автор топика
Ответ на: комментарий от no-such-file

интресено что для проца вобщем всё равно, они адресуются одними и теми же дескрипторами и обрабатываются теми же аппаратными прерываниями, просто есть основной процесс который делает теже потоки и контролирует их, а если делаешь просто сервисы (демоны) - то ими рулит как основной процесс ядро операционки.

Serg_HIS
() автор топика
Ответ на: комментарий от no-such-file

вопрос вобщем остался таковым. Универсалный ли вариант, если использовать thread safe вариант ПХП?

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

как и Вы ошибся

Что значит как и я? Я тебе как раз правильно рассказал.

есть основной процесс который делает теже потоки и контролирует их

Не основной, а единственный. Все потоки работают в рамках одного процесса. Ими никто не рулит, они сами между собой договариваются, в этом и заключается смысл threadsafe.

Универсалный ли вариант, если использовать thread safe вариант ПХП?

threadsafe не бесплатно. Это медленнее чем простой однопоток, т.к. требует дополнительных телодвижений по синхронизации потоков. С другой стороны, сама организация работы сервера в виде отдельных процессов может оказаться медленнее, чем один многопоточный процесс. А может и не оказаться, но если таки говорить о пыхе, то я так понимаю, что threadsafe там запилен конкретно под специфику работы http-серверов в винде.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Я не совем тогда понимаю, если на сайт зашло 100 человек, они работают в однопотоке? Это вообще реально, удобно и быстро?

Serg_HIS
() автор топика
Ответ на: комментарий от no-such-file

threadsafe там запилен конкретно под специфику работы http-серверов в винде

А в линуксе как-то по другому работают потоку? Не понимаю?

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

нет, просто вместо того чтобы заморачивать себе этим голову, сейчас популярное решение переключиться на связку nginx php fastcgi

anonymous
()
Ответ на: комментарий от anonymous

Я просто думаю сделать простой сайт визитку.

Мне например вполне хватит Жумлы на ПХП и Апач.

Для ресурсоёмких проектов использую энтерпрайз решения на Жабе.

Глупо поднимать завод по производству урана, если нужна всего лишь распилисть пару досок.

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

Вот ещё из документации комментарий, не рекомендующий thread safe на продакшн

Моё мнение такое, что если ты не можешь обосновать, зачем тебе включать thread safe, то и делать этого не нужно. В тех же репозиториях убунты лежит non thread safe, которую все поголовно используют и с Apache2 и с nginx. А кейс, когда нужна thread safe версия, надо ещё сперва придумать, сам по себе он внезапно не возникнет.

nguseff
()
Ответ на: комментарий от Serg_HIS

Мне например вполне хватит Жумлы на ПХП и Апач.

Ну тем более. На тех же шаред хостингах с апачем везде thread safe выключен. И thread safe ты как собрался ставить? Вручную php собирать с экзотическими настройками ради джумлы?

nguseff
()
Ответ на: комментарий от anonymous

Я про треды не спрашиваю, я про них знаю.

Я не понимаю почему в ПХП так их вынесли как нечто магическое.

Именно и спрашивал в чём плюшки и глюки каждого из вариантов ПХП...

Никто ничего дельного не ответил, зачем именно 2 версии с примерами применения (ну про ЦГИ я почти понял)...

Меня интересует именно под апачем как веб применение.

А что жирноватого для визитки из небольшого блога со статьями?

Serg_HIS
() автор топика
Ответ на: комментарий от nguseff

И thread safe ты как собрался ставить? Вручную php собирать с экзотическими настройками ради джумлы?

Вот и расскажите мне нюансы что там не так или тут не эдак.

Я для этого и затеял вопрос?

И причём тут руками сборка для жумлы?

На сайте ПХП есть и та и та версия (уже собранные)

объясните на пальцах чем та или так хороша (плоха) в ве применении на апач.

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

Апач устаревает, хочешь простоты: почему бы тогда не задействовать встроенный сервер?

Программирование по простому в пыхе выливается в такой быдлокод, что с этим сможет справиться не тривиальные технологии и подходы ...

Может тебе нужно немножко продолжительного рантайма?

anonymous
()
Ответ на: комментарий от anonymous

Я не собираюсь кодить в ПЫХе

Я собираюсь использовать Joomla

Там есть всё что мне нужно для сайта-визитки и даже больше.

Что за встроенный сервер?

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

проблема с многопоточностью в php в том, что она есть, но лучше ей не пользоваться. Проблема в исходниках и зависимостях php/расширений PHP. PHP изначально не предназначен для работы в многопоточном режиме. Сам PHP ещё может и потокобезопасен, но вот как быть с сотней расширений, которые используют сторонние C библиотеки, которые хрен знает, как работают в многопоточном режиме, непонятно.

Хотя сейчас,может всё несколько лучше. Но раз разработчики PHP не рекомендуют использовать php в многопоточном режиме, то я предпочитаю им поверить и не использовать.

nguseff
()
Ответ на: комментарий от Serg_HIS

Что за встроенный сервер?

Не слушай анонимуса, он неадекватен. Это сервер для разработки, а не продакшена (также как simpleHttp в python).

Ставь просто nginx/php5/php-fpm из стандартных репозиториев. Не прогадаешь.

nguseff
()
Ответ на: комментарий от nguseff

Я не вижу смысла ставить nginx. Если честно, то и опыта работы с ним нет. Не понимаю зачем он нужен для сайта-визитки.

Апач не рекомендуете?

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

если на сайт зашло 100 человек, они работают в однопотоке

Что значит «зашло»? Для http начхать сколько там зашло, важно сколько они генерируют одновременных запросов. Грубо говоря 100 запросов обрабатываются в 100 однопоточных процессах, если ты про апач. В nginx они просто мултиплексируются в одном процессе.

Это вообще реально, удобно и быстро?

Вполне.

А в линуксе как-то по другому работают потоку?

Да что ж ты такой упоротый, я тебе уже 2 раза сказал, что в винде апач и другие http-серверы работают в многопотоке, потому что там нет другого варианта, т.к. спаун другого процесса там дорогая и медленная операция. А в линуксе fork дочернего процесса относительно простой и быстрый и кроме того, до того как запилили потоки, это был единственный вариант. Поэтому в линуксе обычно не используется многопоток.

Я не понимаю почему в ПХП так их вынесли как нечто магическое

Да потому и вынесли, что это пляска с бубном, но необходимая, чтобы заводить пых в апаче на винде, а в реальности это нахрен никому не надо.

объясните на пальцах чем та или так хороша

threadsafe ничем не хороша, она просто нужна в апаче на винде и других вариантах, когда пых запускается в многопоточном сервере (т.е. опять же в основном на винде). Причём именно внутри, как с mod_php. Если запускать через fcgi, то threadsafe и на винде не нужен.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

я тебе уже 2 раза сказал

Повторение - мать (перемать ) учения :)

Спасибо.

Изучу глубже отличие организации процессов в линуксе и винде, может пригодится для других случаев в программировании кроме ПХП.

Если честно, раньше был уверен что многопоточность это аппаратная фишка процессоров (i386 protected mode). но наверное перед настройкой дескрипторов и отдачей процу на «жевание» процесса, какие-то есть нюансы например при выделении памяти.

Я уже сталкивался, что в виндовсе и линуксе, как-то по разному организована работа с кучей (heap), например при настройке того же postgresql.

Serg_HIS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.