在php映像调整大小期间,服

Jey*_*mar 4 php apache optimization image-processing

我有一个PHP脚本,可以在上传时将图像大小调整为三种不同的分辨率.当我上传图像时,它将其大小调整为300*300,80*80,800*800,并保存原始文件.

我使用的脚本是以下链接https://github.com/blueimp/jQuery-File-Upload/blob/master/example/upload.php

以下图像是服务器的系统监视器.CPU历史记录的前两个峰值是单独上载文件时发生的图像大小调整.以下是从队列上载的文件.

CPU工作负载

在此上载期间,服务器无法处理其他请求.我当时无法访问其他页面.页面加载一半或根本不加载或上载完成后页面加载.

我需要立即解决这个问题.如何克服这个问题.我必须为服务器充分.用于图像调整大小的apache是​​否有任何插件或代码有问题.

Arn*_*anc 10

即使调整图像大小在一分钟内占用了100%的CPU,仍然可以执行其他请求:您在多任务操作系统上使用多进程服务器(并且可能还有多个核心).

但是,当您启动PHP会话时,会话将被锁定:尝试使用同一会话的其他请求必须等到第一个请求结束.

这就是在调整图像大小时无法执行并发请求的原因.

您必须在进行长时间处理之前关闭会话(并最终在此之后重新打开它).

所以,这应该解决你的问题:

session_write_close();
resize_the_image();
session_start();
Run Code Online (Sandbox Code Playgroud)

  • @symcbena:每个具有默认会话处理程序的操作系统都是这种情况; 会话文件在打开后立即被flock()锁定.(来源:https://github.com/php/php-src/blob/11526999d832227a0a1b24fcb96112e3c03c6426/ext/session/mod_files.c#L187) (2认同)