学习 Swoole

Swoole 概述

Swoole 是基于 C 开发的一个 PHP 扩展。是一个 PHP的异步、并行、高性能网络通信引擎,提供了 PHP 语言的异步多线程服务器,异步 TCP/UDP 网络客户端,异步 MySQL,异步 Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步 DNS 查询。 Swoole 内置了 Http/WebSocket 服务器端/客户端、Http2.0 服务器端。

PHP-CLI 模式

CLI 全称是 Command Line Interface,是命令行接口的意思。Swoole 大部分功能只能在 CLI 模式下运行。

进程和线程

进程是什么

进程是计算机中已运行程序的实体。用户下达运行程序的命令后,就会产生进程。进程需要资源才能完成工作,如 CPU 工作时间、存储器、文件和 IO 设备。每个 CPU 核心任何时间内仅能运行一个进程。

线程是什么

线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

进程和线程的区别

  • 创建进程的空间开销和时间开销要大于线程
  • 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程,也就是主线程。
  • 资源分配给进程后,同一进程的所有线程共享该进程的所有资源
  • 线程的划分尺度小于进程,使得多线程程序的并发性高
  • 进程之间有着不同的地址空间,一个子进程挂了,不会影响其他子进程。线程之间共享内存,如果一个线程奔溃了,进而就会影响到其他线程和隶属进程了。

IO 模型