1
イメージを生成するCakeでパフォーマンス上の問題があります。問題はコントローラの機能がCakeと呼ばれてDBに接続し、画像が最後の接続を閉じるのを待っている "同期"にロードされているときです(0.5秒の待機時間で1画像あたりの画像)。cakephp:強制的にアンロード/クローズ接続を行います。
ノー「遅れ」を持つ唯一のコードを作成する機能を強制的に、任意のDBをロードしないようにCakePHPのを強制したり、接続を作成する必要がありclass ThumbnailController extends AppController {
var $uses = null;
var $components = array();
var $autoRender = false;
###########################################################
# PUBLIC
###########################################################
public function thumb($folder = null, $w=0, $h=0, $filename=null){
$this->thumbnail("default.jpg", $folder, $w, $h, $filename);
}
public function thumbMama($folder = null, $w=0, $h=0, $filename=null){
$this->thumbnail("iconopersonadh.png", $folder, $w, $h, $filename);
}
###########################################################
# PRIVATE
###########################################################
private function thumbnail($default_image, $folder = null, $w=0, $h=0, $filename=null){
session_write_close();
$img = WWW_ROOT.DS.$folder.DS.$filename;
if(!is_file($img)){
$img = WWW_ROOT.DS."img".DS.$default_image;
}
$img_info = pathinfo($img);
$filename = $img_info["filename"];
$extension = strtolower($img_info["extension"]);
$tn_filename = "tn-".$filename."-".$w."x".$h.".".$extension;
switch($extension){
case "gif":
header('Content-type: image/gif');
break;
case "png":
header('Content-type: image/png');
break;
default:
header('Content-type: image/jpeg');
break;
}
# COMPROBAMOS SI EXISTE UNA IMAGEN CACHEADA PARA NO GENERAR EL RECORTE AL VUELO
if(is_file(WWW_ROOT.DS."files".DS."tn".DS.$tn_filename)){
readfile(WWW_ROOT.DS."files".DS."tn".DS.$tn_filename);
}else{
$magic = new Imagick($img);
$magic->cropThumbnailImage($w, $h);
$magic->writeImage(WWW_ROOT.DS."files".DS."tn".DS.$tn_filename);
echo $magic;
//$this->log($img_info["basename"]." ---> ".$tn_filename, 'thumbnails-'.date("Ym"));
}
}
:
は、ここに私のコントローラです。あなたが別々のコントローラでこのアクションを入れて(またはすでに持っている)場合は、どのデータベース操作を避けるために、モデルの中で
私はこの問題がcakephpにないと思います。このプロセスを経る多くの画像がある場合はImagickが使用されていますが、このプロセスが可能であることが期待されます。 –
しかし、画像が生成されると、readfile()でサムネイルを読み込み、Imagemagickを使用せず、 – Zenth
私は解決策を見つける!!!! "ThumbnailControllerクラスがAppControllerを継承しています" {"ThumbnailController extends Controller {"、これによりロードが即座に実行されます。 – Zenth