Table des matières
回复内容:
Maison développement back-end tutoriel php socket - 使用php多线程 , 多进程??

socket - 使用php多线程 , 多进程??

Sep 21, 2016 pm 02:13 PM
php socket socket编程

I. php 多进程的使用情况怎样?? (绝大多数php程序都用上了 | 几乎用不上)

II. php 多线程的使用情况怎样?? (绝大多数php程序都用上了 | 几乎用不上)

III. php 多进程 , php多线程 相比较 java 怎样??(简直糟透了 | 不相上下)

网络上几乎都写到 php 不适合多线程(是否也不适合多进程??),是否这样就不需要了解多线程,多进程之类的php相关特性了??

然后最近由于个人喜好,想自己动手做一个 类似qq的网页版聊天工具,现在 基本上了解了 socket 通信 , 但 了解了下 workerman 这样的开源 通信框架,他的特性介绍里面包括以下几个:

socket - 使用php多线程 , 多进程??

socket - 使用php多线程 , 多进程??

socket - 使用php多线程 , 多进程??

I. php多进程 可以发挥多核cpu优势,提高性能,并支持高并发??

II . php单个进程可以支持几千甚至几万的并发连接,多进程则可以支持数十万甚至上百万的并发连接。 这句话该怎么理解?? 由于它采用的是 socket 的方式进行通信,那么端口数实际上是已经固定的,不会超过 65536 ,一个端口表示一对连接,这边说的 几千 -》 几万可能还好一点, 多进程下的 数十万,上百万,有那么 厉害吗??

回复内容:

I. php 多进程的使用情况怎样?? (绝大多数php程序都用上了 | 几乎用不上)

II. php 多线程的使用情况怎样?? (绝大多数php程序都用上了 | 几乎用不上)

III. php 多进程 , php多线程 相比较 java 怎样??(简直糟透了 | 不相上下)

网络上几乎都写到 php 不适合多线程(是否也不适合多进程??),是否这样就不需要了解多线程,多进程之类的php相关特性了??

然后最近由于个人喜好,想自己动手做一个 类似qq的网页版聊天工具,现在 基本上了解了 socket 通信 , 但 了解了下 workerman 这样的开源 通信框架,他的特性介绍里面包括以下几个:

socket - 使用php多线程 , 多进程??

socket - 使用php多线程 , 多进程??

socket - 使用php多线程 , 多进程??

I. php多进程 可以发挥多核cpu优势,提高性能,并支持高并发??

II . php单个进程可以支持几千甚至几万的并发连接,多进程则可以支持数十万甚至上百万的并发连接。 这句话该怎么理解?? 由于它采用的是 socket 的方式进行通信,那么端口数实际上是已经固定的,不会超过 65536 ,一个端口表示一对连接,这边说的 几千 -》 几万可能还好一点, 多进程下的 数十万,上百万,有那么 厉害吗??

纠正一个概念:端口总数是一个unsigned short,即65535。这不代表一个服务器只能支撑这么多连接!一个端口对应一个进程,一个进程的连接数更这个进程打开的socket描述符的数量是一致的。而描述符的数量是32位int数量级,当然系统有进程最多描述符的限制,可以通过内核参数来配置,但上个几十万肯定没问题的。

一个典型的多进程http服务器的工作原理大概是这样的:一个进程负责监听80端口的连接,当连接到来后,对应的描述符被内核创建出来,然后进程找一个相对空闲的子进程来处理这个描述符,即在这个描述符上读写数据。注意这里是子进程,正是因为子进程,才可以在父子进程间传递描述符。如果访问量上来了,子进程的数量不够了,父进程可以酌情创建新的子进程来处理描述符;父进程在一定程度上应当实现简单的负载平衡策略。

基于多线程的http服务器工作原理其实差不多,把上面的进程改成线程一样可以解释。

以上阐述跟php没有关系,php只不过是在这些底层的概念和系统调用上封装了而已。大多数人使用php是基于php的脚本解释器。而workerman应该是基于php封装的系统调用实现的http服务。

  • php进程是由php-fpm(fastcgi的实现)管理:master进程会把请求分发到子进程

    • master进程:服务与web server通信

      • 通信实现方式一:http socket(主机+端口),会占用一个端口,所以也就是说这里php-fpm只占用一个端口

      • 通信实现方式二:unix domain socket(进程间通信),是基于.sock文件的方式,不依赖网络协议,所以也就是说理论上不占用端口

    • pool进程:子进程,含解析器,解析脚本

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

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.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Journalisation CakePHP Journalisation CakePHP Sep 10, 2024 pm 05:26 PM

Se connecter à CakePHP est une tâche très simple. Il vous suffit d'utiliser une seule fonction. Vous pouvez enregistrer les erreurs, les exceptions, les activités des utilisateurs, les actions entreprises par les utilisateurs, pour tout processus en arrière-plan comme cronjob. La journalisation des données dans CakePHP est facile. La fonction log() est fournie

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

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

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

See all articles