Table of Contents
回复内容:
Home Backend Development PHP Tutorial php页面在同一浏览器打开不并发执行

php页面在同一浏览器打开不并发执行

Jun 06, 2016 pm 08:32 PM
php

遇到一个很奇葩的现象,test.php:(访问后隔10s打印时间)

<code><?php sleep(10);
echo date('Y-m-d H:i:s', time());
</code></code>
Copy after login
Copy after login

同一个浏览器打开2个标签页,同时访问apache上的这个页面,为什么第2个页面永远会比第一个页面晚10s钟,在不同浏览器里同时打开就几乎同时输出。

难道是php处理同一浏览器的2个相同请求,不并发而是先后执行,这是为什么呢?

把apache换成nginx也是如此,这是php本来的特性还是哪设置的问题?

回复内容:

遇到一个很奇葩的现象,test.php:(访问后隔10s打印时间)

<code><?php sleep(10);
echo date('Y-m-d H:i:s', time());
</code></code>
Copy after login
Copy after login

同一个浏览器打开2个标签页,同时访问apache上的这个页面,为什么第2个页面永远会比第一个页面晚10s钟,在不同浏览器里同时打开就几乎同时输出。

难道是php处理同一浏览器的2个相同请求,不并发而是先后执行,这是为什么呢?

把apache换成nginx也是如此,这是php本来的特性还是哪设置的问题?

假设你只开启了1个PHP-FPM工作进程,PHP-FPM执行sleep(10)时会睡眠10秒,后面的请求必须等待10秒后才能被处理,不管是不同的标签页还是不同的浏览器。而且sleep调用比较特殊,就算浏览器按Esc中断请求,PHP-FPM也不会停止sleep。

不能同时返回应该是浏览器的机制,而不是PHP的问题,对同一个资源发出请求,如果第一个请求未响应,浏览器应该就不会发出第二个请求。如果第一个请求能及时响应,第二个请求也就能及时发出,比如同时访问下面的脚本,两个请求几乎是同时返回的,其中flush能及时响应,即使处理没有完成。

<code><?php ob_start();
echo date('H:i:s').'<br />';
echo str_repeat(' ', 1024*4);
ob_flush();
flush();
ob_end_flush();
sleep(10);
echo date('H:i:s');
</code>
Copy after login

有可能是浏览器限制。某些浏览器是单线程。

@by快乐家园 所说的浏览器限制正对我的电脑 -- 也是chrome。
换做双开控制台,然后用两个curl去访问,结果就是几乎同时返回。

为什么会有浏览器限制呢,chrome应该是多进程的呀?
-- 初步猜测是因为cookie的问题,因为刚刚清掉所有cookie后,然后再访问就是同时返回了
为什么cookie会导致无法并行呢?
-- 检查下php的配置,发现session.auto_start = 1,修改为0,重启下服务器,再访问就同时返回了;
-- session会有锁,正是这个锁导致第一个请求结束后,第二个请求才真正开始。

原因可能有多方面,LZ可以检查下session.auto_start

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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

In this chapter, we are going to learn the following topics related to routing ?

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

CakePHP Creating Validators CakePHP Creating Validators Sep 10, 2024 pm 05:26 PM

Validator can be created by adding the following two lines in the controller.

See all articles