php不支持多线程,所以不用考虑并发问题?这句话,对吗
如题,能否给出详细的理由,谢过。
回复内容:
如题,能否给出详细的理由,谢过。
平时说的并发多数是针对服务的,比如说 apache nginx
而不是说php
再加上 php是有多线程扩展的 只是平时项目中没有用到而已
定义多线程类 extends Thread
其实这句话本身是歧义的。
首先看前提条件:
<code>php不支持多线程 </code>
PHP 语言代码本身(大部分情况下)是不关心自身是多进程还是多线程的。但,这并不表示 PHP 不支持多线程/多进程。php-fpm 就是多进程单线程的,apeche 的多线程模式就是多线程的。PHP 只是一般不会在 PHP 代码级别直接控制进程或者线程。
<code>不用考虑并发问题 </code>
前提不成立,结论也就没有什么因果关系了。
我理解说这句话的人的本意是:因为 PHP 一般不支持控制进程、线程,所以也不会从直接通过代码控制进程、线程来应对并发问题。
这么说是没什么问题的。
但是,并发问题还依旧是并发问题,不会因为 PHP 代码本身不太支持解决并发问题,并发问题就不存在的。
解决 PHP 的并发问题常规方式是通过各种配置的调整(nginx.conf, php-fpm.ini, php.ini)、然后就是负载均衡之类的方式来解决的。这些不是 PHP 代码,但是是与 PHP 相关密切的东西,作为 PHPer 也是需要掌握的。
另外,针对具体的业务类型修改 PHP 逻辑,甚至前端调用逻辑也是有的。还有包括 swoole 之类彻底抛弃 php-fpm 的扩展方式,将 PHP 从基础上支持异步并发(然而还是单线程)。这些并发优化方式就要针对具体业务来选择了。
错,牛头不对马嘴!
PHP是不支持多线程,但是命令行程序的后台运行或web应用程序的php-fpm都可以是多进程并发处理的,所以避免不了产生并发问题,比如一个订单就1个库存,两个并发请求同时上来你如何保证订单不超卖?
就算不考虑多线程 并发依然存在 并且更为难解决 还是要想办法去避免和优化的
并发只有多线程?这也太狭隘了
PHP本来就支持多线程呀,所以才有线程安全和非线程安全的区别.
PHP的多线程扩展请看:
https://pecl.php.net/package/pthreads
这个扩展提供了实实在在的PHP多线程编程支持,一般用于cli下的脚本编程.
另外国人峰哥还开发了一个提供了异步多线程架构支持用PHP开发高性能实时网络服务的扩展Swoole:
https://pecl.php.net/package/swoole
Swoole里的多线程并不需要编程者关心,它更像一套架构,你只需配置,Swoole一般也是用于cli下的脚本编程.
像经常跟Nginx配合使用的PHP FastCGI服务PHP-FPM是使用多进程实现利用多核应对并发,跟采用prefork MPM的Apache类似.PHP-FPM支持进程池设置,支持静态和动态的进程数量设置,支持天然的透明的"数据库连接池"(持久连接):
MOD_PHP搭配采用event MPM的Apache跑的时候也是工作于多线程状态,因为Apache event MPM是一个多进程多线程事件驱动的MPM,这是PHP需要使用线程安全版本.

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds





PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
