我创建了一个网站,其中有一个结帐按钮,每当客户单击结帐按钮时,我需要创建 4 个 jpg 格式的图像文件并将它们保存在服务器上。这些图像文件稍后将由站点管理员打印
现在,其中一个图像文件的大小可能为 3MB 到 4MB,而其余 3 个图像文件的大小大部分在 250KB 到 500KB 之间
现在的问题是可能从 3MB 到 4MB 的第一个文件需要一些时间来创建,例如 5-10 秒(这只是一次一个客户结帐时)
但是当我使用 2 个不同的设备同时执行 Checkout 时,时间范围增加到 20 秒,其中一个 Checkout 首先处理,而另一个等待或工作有点慢,所以总时间是 20 秒,否则其中一个的时间结帐是 8 秒,而另一个是 12 秒
所以我担心如果 10 或 20 位客户同时执行结帐,那么他们中的一些人可能不得不等待 2 或 3 分钟甚至更长时间
所以谁能告诉我,我如何提高 PHP 写入文件的速度或提高 PHP 执行速度或增加 RAM 可能会有所帮助(目前是 1GB)
注意:-
-> 我正在使用 IMagick 创建图像文件,
-> 也不能降低 jpg 质量,因为它稍后将以 150 dpi 打印,
-> 第一个图像文件是高清照片,而其余 3 个是仅填充纯色
->它们的分辨率也很高,宽度和高度都在 2800 到 4400 像素之间
->还有一个序列号要添加到所有 4 个图像文件中,所以我不能降低它的质量,否则序列号打印所有 4 个图像文件时,编号可能不可见
更新:客户首先上传照片,然后他可以缩放图像,裁剪甚至移动它(用于裁剪目的)
所以简而言之,他主要是裁剪上传的图像,当他点击结帐按钮时,会创建新图像并添加序列号
我检查了图像在大约 1 秒内被处理或在内存(RAM)中创建的代码,但是当我添加用于在服务器本身的硬盘驱动器上写入图像的代码时,它需要一些时间 5-如果没有同时请求,则为 8 秒;如果有 20-30 个同时请求,则为 10-15 分钟
此外,我必须向他们显示成功或失败消息,但我只能在创建所有 4 个图像文件后显示成功消息,所以即使我使用 ajax,我也无法在所有图像之前显示成功消息创建
同样,如果我删除用于编写图像的代码,那么如果没有同时请求,则时间减少到 1 秒,如果有 20-30 个同时请求,则时间减少到 5-10 秒
所以我认为问题在于编写图像文件而不是处理或生成它
此外,当用户仍在裁剪图像时,我无法创建图像文件,否则会减慢裁剪过程。同样情况不会改变,反而会变得更糟,从“同时结账时会发生什么”的问题将变为“同时裁剪时会发生什么”。所以这不是一个选择
此外,如果我说将向您发送一封电子邮件,通知您您的结帐是否成功,我认为这看起来并不专业。