您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > php

php为什么没有多线程?

时间:2019-10-08 10:58:10  来源:  作者:

1. php 与 多线程

php的多线程,对于phper是一个较冷门的知识。相信很多工作了很多年的程序员,没用过php多线程的大有人在。所以可以认为php是单线程。

php为什么没有多线程?

多线程示意

2. php是单线程,多进程模型

多线程有它的优点,

a.可以充分利用cpu,

b.调度的系统开销比进程小,

c.多线程共享内存空间,不需要额外的IPC通信。

但多线程可能会引入其他问题,如数据同步,资源竞争,死锁等,处理不好容易出问题;

多进程也可以使用cpu多核,不一定非要多线程不可,PHP-FPM就是一个C实现的多进程FastCGI服务

对一个请求来说PHP是单线程的,但是多个请求间是并发的,像ApacheNginx都是多线程处理用户请求的。

当有很多用户 请求php时,是多个进程来处理用户请求的,瓶颈多数都是读写数据库,文件,session等这些会加锁的地方,而解决这些问题,

业界都已经有了很成熟的方案。和php是不是多线程没有什么关系。

3. php为什么选择多进程,而不是多线程

首先,定位不同,php不像c++ ,JAVA,定位计算密集场景,php就是为web开发而生的语言,更侧重开发效率。web应用就是IO密集型的场景,数据库操作,文件读写,网络

IO,这些对于系统的进程调度,进程切换消耗时间都要大得多,所以phper在写代码的时候,没必要把精力放到性能上,而是功能的实现,虽然很多人

说php不适合大型应用,应对高并发场景乏力,确实以前是有这样的问题,但是现在php在处理大数据,高并发都有了很成熟的解决方案。

4. 那么问题来了,php缺陷 ,这样一门语言,我们如何取舍,还要不要用呢,

首先,php开发效率高,上手容易,保证一用你就会爱上她,如果结合其他性能较高的语言,可以扬长避短;

另外,php现在有了swoole 、workerman这些高性能的扩展,这些都是常驻内存的,性能很高,对性能要求高的场景可以用,对phper来说就是无缝接入

完全没有门槛。

最后,对于大多数程序员来说,换个go java这些原生就支持多线程的语言,也不是什么难事。
 

4.场景

我和很多phper一样,如果问我,有什么场景,必须要php多线程来实现呢,

php也有多线程pthreads扩展,PHP 默认并不支持多线程,要使用多线程需要安装 pthread 扩展,而要安装 pthread 扩展,必须使用 --enable-maintainer-zts 参数重新编译 PHP,

这个参数是指定编译 PHP 时使用线程安全方式。如果有用过java之类语言的多线程,用起来php多线程也是信手拈来的事情。



Tags:php 多线程   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1. php 与 多线程php的多线程,对于phper是一个较冷门的知识。相信很多工作了很多年的程序员,没用过php多线程的大有人在。所以可以认为php是单线程。多线程示意2. php是单线程...【详细内容】
2019-10-08  Tags: php 多线程  点击:(310)  评论:(0)  加入收藏
▌简易百科推荐
序言:前段时间织梦因为版权的问题在网上闹得沸沸扬扬,也提醒了众多开发者选择cms上应该谨慎使用,今天给大家展示一款自己搭建的内容管理系统,不用担心版权的问题,而且非常容易维...【详细内容】
2021-11-30  小程序软件开发    Tags:管理系统   点击:(34)  评论:(0)  加入收藏
准备安装包(PHP: Hypertext Preprocessor)下载安装包以及组件wget https://www.php.net/distributions/php-8.0.0.tar.bz2wget https://github.com/phpredis/phpredis/archive...【详细内容】
2021-11-09  mimic96    Tags:PHP   点击:(40)  评论:(0)  加入收藏
golang context 很好用,就使用php实现了github地址 : https://github.com/qq1060656096/php-go-context context使用闭坑指南1. 将一个Context参数作为第一个参数传递给传入和...【详细内容】
2021-11-05  1060656096    Tags:PHP   点击:(41)  评论:(0)  加入收藏
一段数组为例:$list = array:4 [ 0 => array:7 [ "id" => 56 "mer_id" => 7 "order_id" => "wx163265961408769974" "is_postage" => 0 "store_name" => "奇...【详细内容】
2021-09-29  七七小影视    Tags:PHP   点击:(65)  评论:(0)  加入收藏
利用JS的CryptoJS 3.x和PHP的openssl_encrypt,openssl_decrypt实现AES对称加密解密,由于需要两种语言对同一字符串的操作,而CryptoJS 的默认加密方式为“aes-256-cbc”,PHP端也...【详细内容】
2021-09-16  李老师tome    Tags:对称加密   点击:(79)  评论:(0)  加入收藏
1、checkdate()验证格利高里日期即:日期是否存在。checkdate(month,day,year);month必需。一个从 1 到 12 的数字,规定月。day必需。一个从 1 到 31 的数字,规定日。year必需。...【详细内容】
2021-08-31  七七小影视    Tags:时间函数   点击:(80)  评论:(0)  加入收藏
对于各类开发语言来说,整数都有一个最大的位数,如果超过位数就无法显示或者操作了。其实,这也是一种精度越界之后产生的精度丢失问题。在我们的 PHP 代码中,最大的整数非常大,我...【详细内容】
2021-08-26  硬核项目经理    Tags:PHP   点击:(83)  评论:(0)  加入收藏
遵从所有教材以及各类数据结构相关的书书籍,我们先从线性表开始入门。今天这篇文章更偏概念,是关于有线性表的一个知识点的汇总。上文说过,物理结构是用于确定数据以何种方式存...【详细内容】
2021-07-19  硬核项目经理    Tags:线性表   点击:(94)  评论:(0)  加入收藏
一、开启IIS全部功能。二、部署PHP1.官网下载并解压PHP: https://windows.php.net/downloads/releases/2.将php.ini-development文件改为php.ini3.修改php.ini(1)去掉注释,并修...【详细内容】
2021-07-15  炘蓝火诗  今日头条  Tags:PHP环境   点击:(129)  评论:(0)  加入收藏
一、环境说明本文中使用本地VM虚机部署测试。OS:CentOS Linux release 7.8.2003 (Core)虚机配置:2核CPU、4G内存①系统为CentOS 7.8 x64最小化安装,部署前已完成系统初始化、...【详细内容】
2021-06-25  IT运维笔记  今日头条  Tags:PHP8.0.7   点击:(141)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条