Php 图像创建减速服务

Php 图像创建减速服务,php,gd,ram,uiimagejpegrepresentation,Php,Gd,Ram,Uiimagejpegrepresentation,我有这个功能,我正试图在我的服务器上创建一些图像 foreach($value[0] as $imagekey => $imageval) { $imgname = $gancxadeba . '_' . $imagekey; $saveaddr = dirname(dirname($_SERVER['PHP_SELF'])).'/www/classifieds_images/';

我有这个功能,我正试图在我的服务器上创建一些图像

           foreach($value[0] as $imagekey => $imageval) {
                $imgname = $gancxadeba . '_' . $imagekey;
                $saveaddr = dirname(dirname($_SERVER['PHP_SELF'])).'/www/classifieds_images/';
                $as = '.JPG';
                $originalname = $imgname . $as;
                if(!file_exists($saveaddr.$originalname)) {
                    if (preg_match('/\.(jpg)$/', $imageval)) {
                        $getfile = imagecreatefromjpeg($imageval);
                    } elseif (preg_match('/\.(JPG)$/', $imageval)) {
                        $getfile = imagecreatefromjpeg($imageval);
                    } elseif (preg_match('/\.(png)$/', $imageval)) {
                        $getfile = imagecreatefrompng($imageval);
                    } else {
                        $getfile = imagecreatefromgif($imageval);
                    }
                    list($width, $height) = getimagesize($imageval);
                    $newWidth = 90;
                    $newHeight = 120;
                    $original = imagecreatetruecolor($width, $height);
                    imagecopyresampled($original, $getfile, 0, 0, 0, 0, $width, $height, $width, $height);
                    imagejpeg($original, "../www/classifieds_images/$originalname");
                    echo 'განცხადება: ' . $gancxadeba . ' ორიგინალი სურათი: ' . $imgname . ' created!' . PHP_EOL;

                    $thumbname = $imgname . '_THUMB' . $as;
                    if (!file_exists($saveaddr . $thumbname)) {
                        $thumb = imagecreatetruecolor($newWidth, $newHeight);
                        imagecopyresampled($thumb, $getfile, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
                        imagejpeg($thumb, "../www/classifieds_images/$thumbname");
                        echo 'განცხადება: ' . $gancxadeba . ' თამბი სურათი: ' . $imgname . ' created!' . PHP_EOL;
                    }
                }
                $image[$imagekey] = $imgname;
            }
如您所知,我正在获取图像链接,然后检查文件是否存在,如果不存在,我正在创建文件。 但是我的服务器速度变慢了。 它使用2GB内存。 我可以做些什么来加速我的服务器

我先尝试了file_put_content(),然后创建了thumb 但它的工作不如gd库。 因此,请帮助我以更快的速度完成此功能。

需要注意的一件事(并不是您问题的真正答案): 使用GD2函数时,不要信任文件扩展名。有人可能以“trollpic.gif”的名称保存JPEG,并导致imagecreatefromgif抛出错误

改用exif数据:

此外,如果可能的话,您可以尝试使用Imegmagick作为GD2的替代品(它不在一些更便宜的托管服务上)

[编辑]

$original = imagecreatetruecolor($width, $height);
imagecopyresampled($original, $getfile, 0, 0, 0, 0, $width, $height, $width, $height);
imagejpeg($original, "../www/classifieds_images/$originalname");
看起来$getfile和$original都保留相同的数据。 检查这是否有效:

$original = imagecreatetruecolor($width, $height);
imagejpeg($getfile, "../www/classifieds_images/$originalname");
这并不是优化代码的最佳方法,但至少是一个开始。 我建议对脚本的一次执行中可以处理的文件数量设置一些限制,并对其进行排队-如果您试图处理大量数据(不一定与图像相关),这是最好的方法

[编辑二]

另外-在不再需要变量时取消设置变量。 当您对图像执行了所有操作并将其保存在文件中时,请销毁资源。它不会删除图像文件,只是从内存中删除其数据。

它并不是在创建一个会减慢速度的文件。但是使用图像库,你试过最著名的吗?是的。现在比以前快了。但它使用的是2GB内存。我可以做些什么来尽量减少使用RAM?