Является ли PHP потокобезопасным? - PullRequest
49 голосов
/ 25 марта 2009
  • Является ли PHP (с версии 5.2) поточно-ориентированным в Linux / UNIX?
  • Можно ли использовать его с Apache Worker-MPM или Event-MPM?

Факты, которые я до сих пор собирал, неубедительны:

  • Двоичные файлы по умолчанию, включенные в большинство дистрибутивов, отключили ZTS, поэтому я знаю, что мне придется их перекомпилировать.
  • Теоретически Zend Engine (ядро PHP) с включенным ZTS является поточно-ориентированным.
  • Говорят, что некоторые модули не могут быть поточно-ориентированными, но я не нашел ни одного списка модулей, которые есть или нет.
  • PHP FAQ состояния почти такие же, как указано выше.

Какой у вас опыт?

Это касается не только ошибок сегментации ("нарушения доступа" в номенклатуре Windows). безопасность потока .

Ответы [ 3 ]

23 голосов
/ 25 марта 2009

Я знаю, gettext и set_locale не безопасны для потоков. PHP не должен использоваться с многопоточным MPM.

PHP еще не поддерживает потоки .
Запуск PHP без резьбы .

6 голосов
/ 14 июля 2012

См. Где я могу получить библиотеки, необходимые для компиляции некоторых из дополнительных расширений PHP? для получения списка потоковых и небезопасных расширений (* отмеченные не являются потоковыми безопасно и другие).

5 голосов
/ 25 марта 2009

Лучший вопрос может быть: «Следующий PHP-код будет вызывать нарушения прав доступа при использовании MPM?» Или: «Испытывали ли вы странное поведение, вероятно, связанное с проблемами параллелизма при использовании следующих функций?»

В остальном это русская рулетка. Если вы используете какое-то упакованное приложение, оно может нормально работать, но через месяц выйдет новая версия приложения.

Я настоятельно не рекомендую использовать MPM с PHP в целом. Однако, если у вас есть небольшой код для запуска, вы можете опубликовать его, и мы можем сказать вам, если вы собираетесь попасть в ловушку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...