所以,我有一個腳本來調整大小,保存一個gif並在我的服務器上保存這個gif的預覽圖像。上傳腳本太長,無法執行
這是我的腳本:
public function createImageGif($gif, $x, $y, $w, $h)
{
$image = new Imagick();
$decoded = base64_decode($gif);
$image->readimageblob($decoded);
$image = $image->coalesceImages();
$image_name = uniqid(rand()).'.gif';
foreach ($image as $frame) { //gif creation
$frame->cropImage($w, $h, $x, $y);
$frame->thumbnailImage(117, 135);
$frame->setImagePage(117, 135, 0, 0);
}
$image = $image->deconstructImages();
$image->writeImages('uploads/profiles/'.$image_name, true);
//preview creation
$im = imagecreatefromstring($decoded);
if ($im !== false) {
header('Content-Type: image/gif');
$newimage = imagecreatetruecolor(117, 135);
imagecopyresampled($newimage, $im, 0, 0, $x, $y, 117, 135, $w, $h);
imagegif($newimage, 'uploads/profiles-preview/'.$image_name.'', 100);
imagedestroy($newimage);
imagedestroy($im);
}
return $image_name;
}
所以,$gif
是在第一長字符串BLOB(約2 000 000個字符)。最後,我的服務器上的gif大小約爲300ko。
該腳本需要20多秒才能執行。我有一個良好的連接和一個很好的服務器。
如何優化此腳本?有任何想法嗎 ?
編輯:這是我的腳本在JavaScript創建我的數據:
您好Clément。你可以放入一些斷點並接近代碼的「掛起」部分。這可能會使您更容易幫助您改進代碼。如果你無法做出斷點,你可以做一些回聲1;出口;並且將代碼「掛起」的地方修飾一番。 –
哼,我的問題不在我的PHP腳本中,而是在我的ajax請求中。我試圖發送一個非常大的字符串與jquery ajax(在我的編輯img.src)。所以,問題是ajax –