Maison développement back-end tutoriel php PHP的线程安全与非线程安全版本的区别_PHP

PHP的线程安全与非线程安全版本的区别_PHP

Jun 01, 2016 pm 12:13 PM
fastcgi 线程安全

  Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。

  从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是 PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。

  为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。

  因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment implémenter un objet cache thread-safe en Python Comment implémenter un objet cache thread-safe en Python Oct 19, 2023 am 10:09 AM

Comment implémenter un objet cache thread-safe en Python À mesure que la programmation multithread devient de plus en plus largement utilisée en Python, la sécurité des threads devient de plus en plus importante. Dans un environnement simultané, lorsque plusieurs threads lisent et écrivent des ressources partagées en même temps, des incohérences de données ou des résultats inattendus peuvent en résulter. Afin de résoudre ce problème, nous pouvons utiliser des objets de cache thread-safe pour garantir la cohérence des données. Cet article explique comment implémenter un objet de cache thread-safe et fournit des exemples de code spécifiques. Utilisation de la bibliothèque standard de Python

La relation entre les méthodes de passage des paramètres de fonction C++ et la sécurité des threads La relation entre les méthodes de passage des paramètres de fonction C++ et la sécurité des threads Apr 12, 2024 pm 12:09 PM

Méthodes de passage des paramètres de fonction et sécurité des threads : Passage de valeur : créez une copie du paramètre sans affecter la valeur d'origine, qui est généralement thread-safe. Passer par référence : transmission de l'adresse, permettant la modification de la valeur d'origine, généralement non thread-safe. Passage de pointeur : le passage d'un pointeur vers une adresse est similaire au passage par référence et n'est généralement pas thread-safe. Dans les programmes multithread, le passage de références et de pointeurs doit être utilisé avec prudence, et des mesures doivent être prises pour éviter les courses de données.

Comment garantir la sécurité des threads des variables volatiles dans les fonctions Java ? Comment garantir la sécurité des threads des variables volatiles dans les fonctions Java ? May 04, 2024 am 10:15 AM

Méthodes pour garantir la sécurité des threads des variables volatiles en Java : Visibilité : assurez-vous que les modifications apportées aux variables volatiles par un thread sont immédiatement visibles par les autres threads. Atomicité : assurez-vous que certaines opérations sur des variables volatiles (telles que les échanges d'écriture, de lecture et de comparaison) sont indivisibles et ne seront pas interrompues par d'autres threads.

Contrôle de concurrence et sécurité des threads dans le framework de collection Java Contrôle de concurrence et sécurité des threads dans le framework de collection Java Apr 12, 2024 pm 06:21 PM

Le framework de collection Java gère la concurrence via des collections thread-safe et des mécanismes de contrôle de concurrence. Les collections thread-safe (telles que CopyOnWriteArrayList) garantissent la cohérence des données, tandis que les collections non thread-safe (telles que ArrayList) nécessitent une synchronisation externe. Java fournit des mécanismes tels que des verrous, des opérations atomiques, ConcurrentHashMap et CopyOnWriteArrayList pour contrôler la concurrence, garantissant ainsi l'intégrité et la cohérence des données dans un environnement multithread.

Sécurité des threads dans la gestion de la mémoire C++ Sécurité des threads dans la gestion de la mémoire C++ May 02, 2024 pm 04:06 PM

La gestion de la mémoire thread-safe en C++ garantit l'intégrité des données en garantissant qu'aucune corruption de données ou condition de concurrence critique ne se produit lorsque plusieurs threads accèdent simultanément aux données partagées. À retenir : implémentez une allocation de mémoire dynamique sécurisée pour les threads à l'aide de pointeurs intelligents tels que std::shared_ptr et std::unique_ptr. Utilisez un mutex (tel que std::mutex) pour protéger les données partagées contre l'accès simultané par plusieurs threads. Les données partagées et les compteurs multithread sont utilisés dans des cas pratiques pour démontrer l'application de la gestion de la mémoire thread-safe.

Comment configurer et optimiser FastCGI dans Nginx Comment configurer et optimiser FastCGI dans Nginx May 21, 2023 am 08:16 AM

fastcgi : fastcgi est développé et amélioré à partir de cgi. Le principal inconvénient de la méthode d'interface cgi traditionnelle est la faible performance, car chaque fois que le serveur http rencontre un programme dynamique, l'analyseur de script doit être redémarré pour effectuer l'analyse, puis les résultats sont renvoyés au serveur http. Ceci est presque indisponible lorsqu’il s’agit d’un accès simultané élevé. De plus, la méthode d'interface cgi traditionnelle est peu sécurisée et est rarement utilisée aujourd'hui. Le mode d'interface fastcgi adopte la structure c/s, qui peut séparer le serveur http et le serveur d'analyse de script, et démarrer un ou plusieurs démons d'analyse de script sur le serveur d'analyse de script. Chaque fois que le serveur http rencontre un programme dynamique, il peut être livré directement à fastcg

Problèmes courants de collections simultanées et de sécurité des threads en C# Problèmes courants de collections simultanées et de sécurité des threads en C# Oct 09, 2023 pm 10:49 PM

Problèmes courants de collectes simultanées et de sécurité des threads en C# Dans la programmation C#, la gestion des opérations simultanées est une exigence très courante. Des problèmes de sécurité des threads surviennent lorsque plusieurs threads accèdent et modifient les mêmes données en même temps. Afin de résoudre ce problème, C# fournit des mécanismes simultanés de collecte et de sécurité des threads. Cet article présentera les collections simultanées courantes en C# et expliquera comment gérer les problèmes de sécurité des threads, et donnera des exemples de code spécifiques. Collection simultanée 1.1ConcurrentDictionaryConcurrentDictio

Comment la sécurité des threads est-elle implémentée dans les fonctions Java ? Comment la sécurité des threads est-elle implémentée dans les fonctions Java ? May 02, 2024 pm 06:09 PM

Les méthodes d'implémentation des fonctions thread-safe en Java incluent : verrouillage (mot-clé synchronisé) : utilisez le mot-clé synchronisé pour modifier la méthode afin de garantir qu'un seul thread exécute la méthode en même temps afin d'éviter la concurrence des données. Objets immuables : si l'objet sur lequel une fonction opère est immuable, il est intrinsèquement thread-safe. Opérations atomiques (classe Atomic) : utilisez les opérations atomiques thread-safe fournies par des classes atomiques telles que AtomicInteger pour opérer sur les types de base et utilisez le mécanisme de verrouillage sous-jacent pour garantir l'atomicité de l'opération.

See all articles