Является ли PHP потокобезопасным?

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

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

  • Стандартные двоичные файлы, включенные в большинство дистрибутивов, отключены ZTS, поэтому я знаю, что мне придется их перекомпилировать.
  • В теории Zend Engine (core PHP) с включенным ZTS является потокобезопасным.
  • Он сказал, что некоторые модули могут быть потокобезопасными, но я не нашел список модулей, которые есть или нет.
  • Часто задаваемые вопросы по PHP содержит почти то же самое, что и выше.

Каков ваш опыт?

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

Ответ 3

Лучше может быть вопрос: "Является ли следующий код PHP, чтобы инициировать нарушения доступа, если используется MPM?" Или: "Вы испытывали странное поведение, вероятно, связанное с проблемами concurrency, используя следующие функции?"

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

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