PHP - 多进程编程「含线程/协程」 - 学习/实践

1.应用场景

主要用于了解学习PHP的多进程模型,深入PHP实现原理, 实现深层次编程

同时对比其他语言,更加清楚PHP的优劣势所在,更加理解编程的意义所在~

也是编程的基本功【内力】~

2.学习/操作

1.文档阅读

操作系统 - 进程 / 线程 / 协程 - 学习/实践_穿素白衫的少年的博客-CSDN博客 // 进程与线程 + 协程 - 学习/实践

php多进程编程详解

PHP中的线程安全

PHP进程间通信-信号

PHP 线程,进程和并发

如何防止PHP进程异常退出(进程被杀)?

PHP多进程编程之僵尸进程问题

关于PHP协程与阻塞的思考

从并发处理谈PHP进程间通信(一)外部介质  

从并发处理谈PHP进程间通信(二)System V IPC

php中pcntl_fork创建子进程

PHP多进程 基于Redis实现轻量级延迟队列

如何防止PHP进程异常退出(进程被杀)?

借助Swoole的process进程模块来实现多进程编程

Swoole4 文档 - Process\Pool

Note:

上面文章都是来自于一个公众号

2.整理输出

2.1 原子操作

"原子操作(atomic operation)是不需要synchronized",这是多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切 [1]  换到另一个线程)。

如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构,那么这个操作是一个原子(atomic)操作。

原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分。

将整个操作视作一个整体是原子性的核心特征。

更多信息

https://baike.baidu.com/item/原子操作/1880992

2.2  多进程编程

来自swoole官方文档上的一段话:

Process\Pool 是将 Server 的进程管理模块(即Swoole的process)封装成了 PHP 类,支持在 PHP 代码中使用 Swoole 的进程管理器。

在实际项目中经常需要写一些长期运行的脚本,如基于 RedisKafkaRabbitMQ 实现的多进程队列消费者,多进程爬虫等等,开发者需要使用 pcntl 和 posix 相关的扩展库实现多进程编程,但也需要开发者具备深厚的 Linux 系统编程功底,否则很容易出现问题,使用 Swoole 提供的进程管理器可大大简化多进程脚本编程工作。

  • 保证工作进程的稳定性;
  • 支持信号处理;
  • 支持消息队列和 TCP-Socket 消息投递功能;

查看PHP的扩展:

pcntl: process control

PHP: PCNTL - Manual

PHP: POSIX - Manual -- 官方上几乎没有很多文字介绍

PHP pcntl是什么?-php教程-PHP中文网

pcntl是一个可以利用操作系统的fork系统调用, 在PHP中实现多线程的进程控制扩展,当使用fork系统调用后执行的代码将会是并行的。pcntl仅适用于Linux平台的CLI模式下使用。

PHP官方没有提供多线程的扩展,在pecl中有一个pthread扩展提供了多线程的特性,此版本仅在线程安全版本中可用。后续补充

后续补充

...

昨日随风去,今时大风起~

3.问题/补充

TBD

4.参考

参见文档阅读列表

后续补充

...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值