Home > Backend Development > PHP Tutorial > PHP是单线程的,如何应对大量的http访问?

PHP是单线程的,如何应对大量的http访问?

WBOY
Release: 2016-06-23 13:57:18
Original
847 people have browsed it

刚开始只知道php可以做网站,从来没有接触过php的线程问题,今天突然了解到php是单线程的,可是突然想到,php做的网站肯定是用于多人访问的,如果访问量大,那岂不是出现排队问题?
这是真的吗?还是apache在处理php程序的时候会用服务器实现多线程呢?


回复讨论(解决方案)

nginx+php

nginx+php

可否说得详细些呢?这意思是apache+php是单线程的?

nginx+php

查了下,貌似明白了,apache+php是阻塞型处理,nginx+php是异步非阻塞的

应对 http 的访问,是 web 服务器的事情,与 php 没什么关系
php 只是作为 web 服务器的脚本出现的

应对 http 的访问,是 web 服务器的事情,与 php 没什么关系
php 只是作为 web 服务器的脚本出现的

蒙了,那一般说php是单线程和java的多线程的是什么意思呢?求指导,求详解啊,不用太深

可以用WEB服务器多线程调用PHP!

php有进程管理器,fpm fcgi什么的。php语言本身是没有多线程的。

应对高并发的话,用nginx或其他软件做负载均衡服务。php层面可以用gzip压缩和缓存等等。

PHP确实没有多线程,因此不能在代码里再开一个线程去执行其他任务,不能像java一样,同一时刻有多条主线逻辑在执行.但是这和大访问量并没有多大关系, 因为请求过来,是nginx或apache处理的,然后调用php处理,调用可以是同时进行的,会开启许多要访问脚本的进程,进程与线程是不同的.每个用户都会对应服务器的一个php脚本进程,执行过后(页面被打开),进程就被销毁,内存得到释放.

PHP确实没有多线程,因此不能在代码里再开一个线程去执行其他任务,不能像java一样,同一时刻有多条主线逻辑在执行.但是这和大访问量并没有多大关系, 因为请求过来,是nginx或apache处理的,然后调用php处理,调用可以是同时进行的,会开启许多要访问脚本的进程,进程与线程是不同的.每个用户都会对应服务器的一个php脚本进程,执行过后(页面被打开),进程就被销毁,内存得到释放.


那单例模式中
if($instance == null) {
    $instance = new instance();
}
这块会不会因为服务器调用多个php脚本进行处理,两个调用同时进行了,从而导致new出两个instance呢?

php处理完一个进程,才会接着去处理其他的进程。

所有被启动的 php 解释器都是相互独立的
自然被其解释的 php 代码也是相互独立的

所谓单例,只是对于当前运行的 php 代码集合而言的

个人理解, php 就是一个开发语言,无关 几线程。


PHP确实没有多线程,因此不能在代码里再开一个线程去执行其他任务,不能像java一样,同一时刻有多条主线逻辑在执行.但是这和大访问量并没有多大关系, 因为请求过来,是nginx或apache处理的,然后调用php处理,调用可以是同时进行的,会开启许多要访问脚本的进程,进程与线程是不同的.每个用户都会对应服务器的一个php脚本进程,执行过后(页面被打开),进程就被销毁,内存得到释放.


那单例模式中
if($instance == null) {
    $instance = new instance();
}
这块会不会因为服务器调用多个php脚本进行处理,两个调用同时进行了,从而导致new出两个instance呢?

会啊, 单例模式在PHP中只会正对当前运行的脚本, 你也指出了, 是要先检测$instance  是否为空的, 这仅仅局限于本次运行的脚本不会new出多个对象
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template