我创建了一个用于生成图像文件的PHP脚本,现在我正在使用IMagick,ImageMagick的组合来生成JPEG图像文件。
现在的问题是,一次生成一组图像文件,每组包含4个图像文件(正面,背面,左侧,右侧)
现在通常,Front图像文件的大小介于2Mb-4Mb之间,而Back Image文件的大小介于1Mb-1.5Mb之间,而Sides的大小则仅为500Kb。
现在您可以看到文件大小很大,因为正面和背面的分辨率也很大,如3600x3600,而双面则为200x3600( WidthxHeight )
现在的问题是,有时这个用于生成这些文件的脚本运行得非常好,但有时它只是在没有完全生成所有文件的情况下停止。
例如,有时它会创建所有4个文件,但在其他时候,它将停在Front Image文件中,或者在创建Front之后,它将停止在Back Image文件。
当发生这种情况时,有时apache webserver会停止响应,我的意思是它只是挂起而且我必须通过SSH客户端重新启动它。
我是PHP-Apache-MySQL平台的新手,所以我还在学习,所以如果我犯了一些愚蠢的错误,我很抱歉,但我不知道发生了什么或为什么会这样。
我假设问题可能是由于WebServer重载,因为它需要服务器整个4-5秒生成Front Image文件然后2-3秒生成Back Image文件,大约1秒生成每个侧面图像文件。
因此,如果是由于WebServer过载导致有人请告诉我如何避免它?
另外php.ini文件中缓冲区设置的目的是什么,我的意思是这会影响服务器过载时的结果???
抱歉,我忘了提到我还检查了错误日志,没有错误,执行时间设置为60分钟,此特定脚本的最大内存使用率设置为512Mb。
问题是这个问题很少见,我的意思是脚本会在10次中完美地执行8次。所以这里没有模式,它是完全随机的。
此脚本也在后台运行,我的意思是其他一些脚本向图像生成脚本发出异步AJAX请求,图像生成脚本只是在后台运行生成图像文件,它不返回任何输出,它也会忽略任何user_abort,因此一旦对图像生成脚本进行了AJAX请求,用户就可以自由关闭浏览器。
是的,我尝试在浏览器窗口的新选项卡中运行此脚本,如果脚本完全运行然后没有按预期输出,只有当我检查文件时,所有4个文件都在那里完整的形式。
但是当出现错误时,我只是在我的FireFox浏览器上收到一条消息,表明已经重置了与服务器的连接(此消息由FireFox提供,而不是我的FireFox格式的代码),之后我检查我看到的文件中只创建了4个文件中的一些。此脚本的超时也已设置为60分钟。 FireFox连接重置错误在2分钟内显示。 PHP.ini中的max-timeout设置为30分钟。
如果脚本需要2分钟的时间来完成它的工作,它不总是会产生问题,有时脚本需要3-4分钟的时间,但是完成工作,有时它会在10-20-之后停止工作30秒所以非常随机。我多次检查了代码,这里没有任何错误,因为如果是,那么这个问题的频繁程度会高得多,现在只有10-20%的时间。