Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php映像调整期间服务器工作负载增加_Php_Apache_Optimization_Image Processing - Fatal编程技术网

php映像调整期间服务器工作负载增加

php映像调整期间服务器工作负载增加,php,apache,optimization,image-processing,Php,Apache,Optimization,Image Processing,我有一个php脚本,可以在上传时将图像调整为三种不同的分辨率。当我上传图像时,它会将图像大小调整为300*300、80*80、800*800,并保存原始文件 我使用的脚本是以下链接 以下图像是服务器的系统监视器。CPU历史的前两个峰值是单独上载文件时发生的图像大小调整。以下是从队列上载的文件 在此上载过程中,服务器无法处理其他请求。我当时无法访问其他页面。要么页面加载一半,要么根本不加载,要么页面在上传完成后加载 我需要立即解决这个问题。如何克服这个问题。我必须为服务器加满。apache是否有

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

我使用的脚本是以下链接

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

在此上载过程中,服务器无法处理其他请求。我当时无法访问其他页面。要么页面加载一半,要么根本不加载,要么页面在上传完成后加载


我需要立即解决这个问题。如何克服这个问题。我必须为服务器加满。apache是否有用于图像大小调整的插件,或者代码是否有问题。

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

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

这就是为什么在调整图像大小时不能执行并发请求

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

因此,这应该可以解决您的问题:

session_write_close();
resize_the_image();
session_start();

尝试使用ImageMagick来调整大小,而不是使用普通的PHP函数,这可能会减轻一些负载

在此上载过程中,服务器无法处理其他请求

我发现这非常令人惊讶,特别是考虑到有2个内核(尽管您没有说您使用的是什么操作系统/Web服务器)。如果只是图像上传功能受到影响,那么我怀疑这可能是由于PHP脚本中的问题造成的

当然,可以减少服务器在处理过程中产生的负载量。其中大多数涉及启动一个新的编译进程(例如通过exec)来处理图像(例如来自utilities bundle的图像)——但如果不知道这是什么操作系统,就不可能给出更具体的建议


为了减少图像转换的影响,我为要处理的传入图像运行了一个托管队列。这将确保您只在单个内核上运行映像处理。

原始文件有多大?如果您在本地个人测试机器上运行此操作,并且使用您拥有的规格,则服务器不太可能处理大量映像处理,特别是因为它还运行GNOME等。您应该在“适当”的机器上尝试此操作服务器,看看它是否仍然挂起。您拥有多少台服务器?服务器规格?购买另一台服务器。更强大。这台是英特尔奔腾双CPU@1.60GHz,我的笔记本电脑是英特尔酷睿i7第二代@2.00GHz,负载也很重。现在,我正在尝试imagemagick,我将尝试arnaud576875给出的解决方案,我会让你们都知道。。!!这只会影响正在上载的单个用户,来自另一台计算机/浏览器的用户不会受到影响。OP表示,在调整图像大小期间,他自己无法访问其他页面。他没有提到其他用户同时受到影响。“会话被锁定”-仅在MS Window$@symcbena上:在每个使用默认会话处理程序的操作系统上都是这样;会话文件在打开后立即使用flock()锁定。(来源:)是的,我知道他这么说,我只是澄清了一下。他应该使用另一个浏览器进行测试,以测试它是否只影响会话而不是整个站点(所有访问者)。