加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

《PHP高并发编程》15-01-多线程场景介绍与准备

发布时间:2022-12-19 13:33:33 所属栏目:PHP教程 来源:转载
导读: 题记:以前一直以为PHP没有线程的概念,只有进程的概念php多线程,最近在学习PHP相关知识,才发现:原来PHP也有线程的概念!线程
线程是一组指令的集合,或者是程序的特殊段,它可以在程序

题记:以前一直以为PHP没有线程的概念,只有进程的概念php多线程,最近在学习PHP相关知识,才发现:原来PHP也有线程的概念!线程

线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行,也可以把它理解为代码运行的上下文,所以线程基本上是轻量级的进程。

多线程

多个线程在单进程环境中执行多个任务。

一个进程中的所有线程都可以访问该进程的组成部件,如文件描述符和内存。

包括全局变量。

线程和进程的不同之处在于,在子线程中做的修改会影响到主线程当中的变量。

php-fpm进程进程与线程_线程池与线程_php多线程

而我们子进程中做的修改呢,是不会影响到主进程中的变量的!它任意修改都没有关系!

注意

只要单个资源需要在多个用户间共享,就必须处理一致性问题。这在多进程中也同样会存在!

就比如说子进程同时读取一个文件,可能读取的时候是一个内容,当我们修改的时候会被覆盖掉!我们最后的一个进程所做的覆盖呢,会变成最终的那个值!只有存在一个不确定的因素

而多进程通过提高资源使用率来提高系统效率,但是线程控制时需要防止死锁发生。

由于线程的特殊性,它共享的一个全局变量,所以当我们需要访问一个资源的时候,需要特别注意!

pthreads 扩展

第一步:PHP编译启用ZTS:--enable-maintainer-zts

zts就是 zend-thread-safety 就是线程安全的意思,所以我们需要开启它!!

默认的php-fpm 都是关闭的!!因为我们在web中是不需要线程的!

当这个选项开启的时候,它会战胜一定的效率的!所以默认是关闭的!

第二步:安装 pecl 扩展 pthreads:

可以通过 pecl 命令来安装,也可以通过源码安装!

当我们安装好了,可以通过 php -m 来查看!

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!