Ben temelde bir resmi yeniden boyutlandırmak için) (exec yoluyla gm convert
GraphicksMagick 1.3.12 aramaları, küçük bir PHP sınıfı yazdık. Canlı siteden Kullanıcılar sorunları bildirdikleri ve ben de benim geliştirme kutusunda bazı sorunları çoğaltmak mümkün oldum.
İlgili kod şöyle görünür:
<?php
define('GM_PATH', 'C:\\Archivos de programa\\GraphicsMagick-1.3.12-Q16\\gm.exe');
[...]
private function resize($width, $height, $do_not_upscale=TRUE){
$source = escapeshellarg($this->source_file);
$target = escapeshellarg($this->target_file);
$command = escapeshellarg(GM_PATH) . ' convert ';
$parameters = array();
$parameters[] = $source;
$parameters[] = sprintf('-resize "%dx%d%s"', round($width), round($height), $do_not_upscale ? '>' : '');
$parameters[] = '+profile "*"';
$parameters[] = $target;
$execute = $command . ' ' . implode(' ', $parameters) . ' 2>&1';
exec($execute, $output, $return);
if( $return==0 ){
return $this->target_file;
}else{
throw new Exception('Image resizing failed: return code ' . $return . ': ' . implode(PHP_EOL, $output));
}
}
Canlı site PHP/5.2.9-2 altında çalışır ve dev sitesi PHP/5.3.0 çalışır. Hem kutuları çalışan Windows Server 2003, Apache/2.2 ve GraphicsMagick 1.3.112 Q16.
Canlı sitede ben dönüş koduyla bir özel durum alıyorum 1
. Dev sitenin ben rasgele bir cmd.exe
süreci Ben görev öldürmek kadar% 0 işlemci kullanarak, sonsuza kadar boşta kalır görebilirsiniz.
Harici bir araçtır önüne alındığında, ben ne yapacağım hakkında fikir tükendi. Bu sorunu nasıl giderebilirim?
Update #1
Ben kodu alakasız bir parça küçük bir hata düzeltildi ve bir dosya halinde I ({[0) (]} dahil aklınıza gelebilecek her bireyin adımı giriş ediyorum '-debug All
ile etkinlik ler) ama ben m hiçbir yere gitmiyor. PHP exec () çağrısı ulaşır ve gm.exe
hiçbir şey yapmadan sonsuza dek çalışan kalır.
Update #2
Ben iki araç tarafından yürütülen tam komutu var. Bir echo, bir günlük dosyası içine bunu gösterir:
"C:\Archivos de programa\GraphicsMagick-1.3.12-Q16\gm.exe" convert -debug All "\\SHARE\Project\tmp\mini_4d13465d4bc4b.jpg" -resize "1024x1024>" +profile "*" "\\SHARE\Project\tmp\mini_4d13465dafddd.jpg" 2>>"//SHARE/Project/Miniatura-01.log"
Gösterildiği gibi işlem özelliklerinde Process Explorer komut satırı şöyle:
cmd.exe /c ""C:\Archivos de programa\GraphicsMagick-1.3.12-Q16\gm.exe" convert -debug All "\\SHARE\Project\tmp\mini_4d13465d4bc4b.jpg" -resize "1024x1024>" +profile "*" "\\SHARE\Project\tmp\mini_4d13465dafddd.jpg" 2>>"//SHARE/Project/Miniatura-01.log""
Ben sürece ben double quote the whole expression, ikinci bir tek Başlat-> Çalıştır (bir komut isteminden) çalışır halde manuel hem de komutları çalıştırmak mümkün değilim.
Her durumda, ben resized görüntüyü tüm kez olsun yapmak ve GM tarafından üretilen hata ayıklama günlük normal görünüyor, çünkü beklendiği gibi komut idam olur makul emin değilim. Son satırı her zaman değil zaman durduktun ve zaman, bu gibi görünüyor:
13:53:52 0:03 3.016u 2344 module.c/UnloadModule/2180/Configure: Unloading "JPEG" module ...
Ben bitince çıkmadan sürecini engelleyen bir şey var sanıyorum: bir virüs tarayıcı, bir kabuk uzantısı falan ...
Her şey sabit olmak çabaya değer olmayabilir başlıyor. Ben Imagemagick veya düz PHP işlevi görüntülere geçiş düşünün edeceğiz.
Update #3
Komik ... Ben Imagemagick için açık ettik ve ben aynı kesin sorunu alıyorum! Ben sadece iki tarayıcı sekme açmak gerekir: Ve ben always üretebileceği.
Ben PHP komutları çalıştırmak için nasıl unuttum açıktır. Ben saf bir PHP kodu ile resmi yeniden boyutlandırmak için deneyeceğim.