php进程数怎么配置,apache和php?
apache是通过mod_php来解析phpnginx是通过php-fpm(fast-cgi)来解析php1.PHP解释器是否嵌入Web服务器进程内部执行mod_php通过嵌入PHP解释器到Apache进程中,只能与Apache配合使用,而cgi和fast-cgi以独立的进程的形式出现,只要对应的Web服务器实现cgi或者fast-cgi协议,就能够处理PHP请求。
mod_php这种嵌入的方式最大的弊端就是内存占用大,不论是否用到PHP解释器都会将其加载到内存中,典型的就是处理CSS、JS之类的静态文件是完全没有必要加载解释器。我还是比较推荐你去后盾人上面看看里面有很多关于这类php之类的教学讲解视频哦你可以去看看
怎么制定Web前端学习计划?
一个非常好的问题。先解释下Web前端开发的新发展。
随着移动互联网的发展,前端开发成为重点。移动端有多个平台,Android,iOS,微信小程序,支付宝小程序,还有不断出现的新操作系统,比如阿里YunOS,华为鸿蒙,等等。
为了支持这些平台和系统,越来越多的应用开始使用H5跨平台架构,现在有个新名词叫做“大前端”。
一,H5跨平台开发这时的H5前端开发已经不再是单单的网页开发了,而是前端应用开发。具体到H5 Hybrid架构,常用三剑客:HTML, css, JavaScript
1) HTML和css是页面设计,没有代码逻辑
2) JavaScript编程,还有其它衍生语言,比如常用的TypeScript
JavaScript是一种脚本语言,由解释器加载执行,常用在网页前端动态展示、和服务后端交互等场景。接下来重点介绍JavaScript开发。
二,学习阶段和时间计划1)编程基础,一到两周
学习JavaScript语言基础,掌握基本的编程方法。如果对着课本教程学习比较枯燥,难以坚持,那么可以使用网上的一些学习练手资源,边学习边动手,比如HackerRank
2)开发框架,一到两月
JavaScript前端开发有很多成熟的框架可用,比如JQuery, AngularJS,React,还有前后端都跑通的NoteJS。阿里开源框架Ant Design Pro是一个功能完善的脚手架,推荐新学者练手。
新手学习时,推荐当前普遍使用的Top3开发框架,太新或者太旧的都不适合用来学习练手。
3)项目经验,一到两年
学习的最终目的是学以致用,在实际项目中积累经验,不断提升。有了一定技术基础后,推荐尝试参与开源项目,在开发功能、提交代码的过程中,提升非常快。而且开源项目经验,和工作经验一样,应聘时非常受欢迎。
我是工作多年的Web应用架构师,欢迎关注我,了解更多IT专业知识。
什么是php进程?
一、PHP进程模型
进程的概念是操作系统的结构的基础。Multics的设计者在20世纪60年代首次使用了这个技术词语,它比作业更通用一些。关于进程的定义,如下所示:
1、一个正在执行的程序。
2、计算机中正在运行的程序的一个实例。
3、可以分配给处理器并由处理器执行的一个实体。
4、由单一的顺序的执行线程、一个当前状态和一组相关的系统资源所描述的活动单元。
二、进程与线程区别
进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB中。以表示该进程拥有这些资源或正在使用它们。
另外,进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。
与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。
线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视为现代操作系统的一个重要指标。
线程与进程的区别可以归纳为以下4点:
(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元
(2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。
(3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束
(4)线程是轻量级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的
(5)线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源
(6)线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志
三、进程间通信方式
1、管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
2、信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);
3、报文(Message)队列(消息队列):消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
4、共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
5、套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。
502错误是什么原因造成的?
原因分析:
将请求提交给网关如php-fpm执行,但是由于某些原因没有执行完毕导致php-fpm进程终止执行。那么出现问题的地方便与网关服务如php-fpm的配置有关。
max_children最大子进程数,在高并发请求下,达到php-fpm最大响应数,后续的请求就会出现502错误的。可以通过netstat命令来查看当前连接数。
request_terminate_timeout设置单个请求的超时终止时间。还应该注意到php.ini中的max_execution_time参数。当请求终止时,也会出现502错误的。
当积累了大量的php请求,此时重启php-fpm释放资源,但没有几分钟的时间,又再次出现502错误,为什么呢?此时我们还应考虑是否与数据库有关,查看下数据库进程是否有大量的locked进程,数据库死锁导致超时,前端终止了继续请求,但是SQL语句还在等待释放锁,这时就要重启数据库服务了或kill掉死锁SQL进程了。
Enterprise?
Red Hat Enterprise Linux 8的新功能和新特性介绍
1、内核和支持CPU架构
Red Hat Enterprise Linux 8.0基于Fedora 28和上游Linux内核4.18版本,为用户提供了跨混合云和数据中心部署的安全,稳定和一致的基础,以及支持所有级别工作负载所需的工具。
支持的CPU架构是:
1]、AMD和Intel 64位架构
2]、64位ARM架构
3]、IBM Power Systems,Little Endian
4]、IBM Z
2、内容分发
Red Hat Enterprise Linux 8有两种内容分发模式,只需要启用两个存储库。
1]、BaseOS存储库 BaseOS存储库以传统RPM包的形式提供底层核心OS内容,BaseOS组件的生命周期与之前的Red Hat Enterprise Linux版本中的内容相同。
2]、AppStream存储库 Application Stream存储库提供您可能希望在给定用户空间中运行的所有应用程序,具有特殊许可的其他软件可在Supplemental存储库中获得。
附:AppStream的解释
AppStream允许您在独立的生命周期中安装其他版本的软件,并使您的操作系统保持最新,同时拥有适合您的用例的正确版本的应用程序,请注意,不能同时将两个流安装到同一用户空间中。
应用程序流通常根据其分发的软件版本命名,例如mongodb:3.4或mongodb:3.6,但也可以使用“latest”,“stable”和“latest”等名称。
3、桌面环境
RHEL默认桌面环境是GNOME,GNOME项目由GNOME Foundation支持,RHEL 8中提供的Gnome版本是3.28版本,它可以自动下载Boxes中的操作系统,其他新功能包括:
1]、新的屏幕键盘
2]、新的GNOME Boxes功能
3]、扩展设备支持Thunderbolt 3接口的最显着集成
4]、GNOME软件,dconf编辑器和GNOME终端的改进
5]、GNOME软件实用程序,可用于安装和更新应用程序和gnome-shell扩展
6]、GNOME显示管理器(GDM)使用Wayland作为其默认显示服务器,而不是X.org服务器
附:Wayland显示服务器的特点
1]、更强大的安全模型
2]、改进了多显示器处理
3]、改进的用户界面(UI)缩放
4]、桌面可以直接控制窗口处理
4、软件管理
RHEL 8 YUM软件包管理器现在基于DNF技术,参考dnf命令_Linux dnf命令使用详解:新一代的RPM软件包管理器,它提供对模块化内容的支持,提高的性能以及与工具集成的精心设计的稳定API,RPM的版本是4.14.2,它在开始安装之前验证整个包的内容。
RHEL 8中提供的YUM版本是v4.0.4,基于DNF的YUM与RHEL 7上使用的先前YUM v3相比具有以下优势:
1]、提高性能
2]、支持模块化内容
3]、精心设计的稳定API,可与工具集成
5、Web服务器、Web工具、编译器、语言和数据库
红帽企业版Linux 8包括多个版本的数据库、语言、编译器和其他可供您使用的工具的应用程序,以下是Red Hat Enterprise Linux 8上可用的组件列表:
1]、Python:RHEL 8中的默认Python是Python 3.6版本
2]、数据库服务器:RHEL 8提供的数据库有:MariaDB 10.3、MySQL 8.0、PostgreSQL 9.6、PostgreSQL 10
3]、Redis:可用的redis版本是4.0
4]、Web服务器:httpd 2.4和Nginx 1.14
5]、OpenLDAP由369 LDAP Server取代
6]、Varnish Cache 6.0
7]、Git 2.17
8]、Maven 3.5
9]、Perl 5.26和5.24
10]、PHP 7.2和7.1
11]、Ruby 2.5
12]、Node.js 10和8
13]、Python 3.6和2.7
14]、Rust Toolset 1.26
15]、Scala 2.10
16]、Go Toolset 1.10
17]、GCC编译器8.1
18]、.NET Core 2.1
19]、Java 8和11
20]、Pacemaker集群资源管理器2.0.0,pcs配置系统完全支持Corosync 3,knet和node名称
21]、glibc库基于2.28版
注:要安装更多RHEL 8下的应用软件,请看Red Hat/RHEL系统技术专栏。
6、联网
以下是网络级别的新变化:
1]、RHEL 8与TCP网络堆栈版本4.16一起发布,提供更高的性能,更好的可扩展性和更高的稳定性
2]、网络堆栈升级到上游版本4.18
3]、Iptables已被nftablesframework取代为默认的网络数据包过滤工具
4]、nftables框架是iptablesip6tables、arptables和ebtables工具的指定继承者,这为IPv4和IPv6协议提供了单一框架
5]、firewalld守护程序现在使用nftables作为其默认后端
6]、支持IPVLAN虚拟网络驱动程序,支持多个容器的网络连接
7]、NetworkManager现在支持单根I/O虚拟化(SR-IOV)虚拟功能(VF),NetworkManager允许配置VF的某些属性,例如MAC地址、VLAN、允许的比特率
7、虚拟化
1]、Red Hat Enterprise Linux 8与qemu-kvm 2.12一起发布 支持Q35客户机类型,UEFI客户机启动支持,vCPU热插拔和热插拔,NUMA调优和客户I/O线程中的固定
2]、QEMU仿真器引入了沙盒功能,QEMU沙盒为QEMU可以执行的系统调用提供了可配置的限制,从而使虚拟机更加安全
3]、KVM虚拟化现在支持用户模式指令防护(UMIP)功能,该功能有助于防止用户空间应用程序访问系统范围的设置
4]、KVM虚拟化现在支持5级分页功能,这显着增加了主机和客户机系统可以使用的物理和虚拟地址空间
5]、NVIDIA vGPU现在与VNC控制台兼容
6]、在Red Hat支持的所有CPU架构上,KVM虚拟化支持Ceph存储
7]、Q35,RHEL 8 Virtualization支持更现代的基于PCI Express的机器类型,默认情况下,在RHEL 8中创建的所有虚拟机都设置为使用Q35 PC机器类型
8、网络管理– Cockpit
1]、RHEL 8自动安装了Cockpit,Cockpit所需的防火墙端口会自动打开
2]、Cockpit界面可用于将基于策略的解密(PBD)规则应用于受管系统上的磁盘
3]、对于在身份管理(IdM)域中注册的系统,Cockpit默认使用域的集中管理的IdM资源
4]、Cockpit菜单和页面可以在移动浏览器变体上导航
5]、可以从Cockpit Web界面创建和管理虚拟机
6]、现在可以将“虚拟机”页面添加到Cockpit界面,该界面使用户可以创建和管理基于libvirt的虚拟机
9、系统用户
RHEL 7中可用的usernfsnobody已经与usernobody合并到nobody用户和组对,其UID和GID为65534,这种更改减少了对任何人拥有但与NFS无关的文件的混淆。
10、安全
RHEL 8支持OpenSSL 1.1.1和TLS 1.3,这使您能够使用最新的加密保护标准保护客户的数据。
RHEL 8自带了系统范围的加密策略,可帮助您管理加密合规性,无需修改和调整特定应用程序。
OpenSSH已经改为版本7.8p1,不支持SSH版本1协议,Blowfish/CAST/RC4密码,hmac-ripemd160消息认证码。
安全方面请参考在RHEL 8/CentOS 8系统中禁用SELinux的方法。
10、Linux containers
RHEL 8通过基于开放标准的容器工具包为Linux容器提供企业支持:
1]、Buildah有助于构建OCI图像
2]、Skopeo用于在Docker注册表,Atomic注册表,私有注册表,本地目录和本地OCI布局目录上共享/查找容器映像
3]、Podman用于运行容器而无需守护进程
注:Buildah和Podman都是用于OCI图像和容器的命令行工具,下面附上Buildah与Podman的不同之处介绍。
Buildah的命令复制Dockerfile中的所有命令,实际上只是创建了Buildah容器,以允许将内容添加回容器映像。
Podman专注于帮助您维护和修改OCI images的所有命令和功能,例如拉动和标记,它还允许您创建,运行和维护从这些images创建的容器。
11、存储和文件系统
Stratis是RHEL 8的新本地存储管理器,它在存储池之上提供托管文件系统,并为用户提供附加功能,Stratis通过集成Linux的devicemapper子系统和XFS文件系统来提供ZFS/Btrfs风格的功能。
Stratis支持LUKSv2磁盘加密和网络绑定磁盘加密(NBDE),以实现更强大的数据安全性。
使用Stratis,您可以轻松执行存储任务,例如:
1]、维护文件系统
2]、管理快照和精简配置
3]、根据需要自动增大文件系统大小
Pools是从一个或多个存储设备创建的,而卷是从pool创建的,文件系统是在卷上创建的,因此调整卷的大小也会自动调整FS的大小,Stratis使用的默认文件系统是XFS。
其他值得注意的存储功能包括:
1]、XFS文件系统现在支持共享的写时复制数据扩展功能,这使两个或多个文件能够共享一组公共数据块,创建共享副本不会使用磁盘I/O,也不会占用额外的磁盘空间,共享公共块的文件就像常规文件一样
2]、在创建XFS文件系统时,默认情况下会启用共享的写时复制数据扩展区,从xfsprogs软件包版本4.17.0-2.el8开始
3]、在RHEL 8支持的所有体系结构上支持虚拟数据优化器(VDO)
4]、LUKS2现在是加密卷的默认格式,这取代了RHEL 7中分发的旧版LUKS(LUKS1)格式,如果遇到部分元数据损坏,LUKS2会为加密卷提供元数据自动恢复和冗余