web-dev-qa-db-fra.com

Est PHP thread-safe?

  • Est PHP (à partir de 5.2) thread-safe sur Linux/UNIX?
  • Serait-il possible de l'utiliser avec Apache Worker-MPM ou Event-MPM?

Les faits que j'ai rassemblés jusqu'à présent ne sont pas concluants:

  • Les binaires par défaut inclus dans la plupart des distributions ont ZTS désactivé, donc je suis conscient que je devrais les recompiler.
  • En théorie, Zend Engine (noyau PHP) avec ZTS activé est thread-safe.
  • On dit que certains modules peuvent ne pas être thread-safe, mais je n'ai trouvé aucune liste de modules qui le sont ou qui ne le sont pas.
  • FAQ PHP indique à peu près la même chose que ci-dessus.

Quelle est votre expérience?

Il ne s'agit pas seulement de défauts de segmentation ("violations d'accès" dans la nomenclature Windows). Il y a beaucoup plus à sécurité des threads .

51
vartec

Je connais gettext et set_locale n'est pas threadsafe. PHP ne doit pas être utilisé avec un MPM fileté.

PHP n'est pas encore sûr pour les threads .
Running PHP not threaded .

23
OIS

Voir Où puis-je trouver les bibliothèques nécessaires pour compiler certaines des extensions facultatives PHP? pour une liste des extensions thread-safe et non-thread-safe (marquées d'un * ne sont pas thread-safe et d'autres le sont).

6
AbdolHosein

Une meilleure question pourrait être: "Le code PHP PHP va-t-il déclencher des violations d'accès si MPM est utilisé?" Ou, "Avez-vous rencontré un comportement étrange probablement attribué à des problèmes de simultanéité en utilisant les fonctions suivantes? "

Sinon, c'est la roulette russe. Si vous utilisez une application packagée, cela peut très bien fonctionner maintenant, mais s'arrêtera dans un mois à partir de la sortie d'une nouvelle version de l'application.

Je déconseille fortement d'utiliser MPM avec PHP en général. Cependant, si vous avez un petit code à exécuter, vous pouvez le poster, et nous pourrions vous dire si vous allez tomber sur un piège .

5
Tim Post