Ben (ImageMagick'in gm
, eğer ilgileniyorsanız) harici bir program ile küçük oluşturmak için küçük bir sınıf oluşturduk. Sınıf exec()
gm.exe
başlatmak için diyorlar ama ben bir PHP bug o httpd.exe
eşzamanlı infaz olduğunda dondurma yapar isabet ettik ve bir sorunları açık bir PHP oturum vardır. Bu gibi görünen bir çözümü vardır:
session_write_close();
exec('gm convert -resize 100x100 source.jpg target.jpg');
session_start();
Şimdiye kadar iyi. Şimdi diğer mevcut ve gelecekteki projelerde resim sınıfını yeniden istiyorum. Ben sadece kod bırakın ve değişiklik olmadan arama yapabilmek istiyorsanız, ben orada aren't oturumları ve programlı yapmak gerektiğinde oturum geçici atlamak gerekir. Aksi takdirde, benim thumbnailer başına bir oturum başlayan kötü yan etkisi olacaktır.
How can I properly detect whether there is an active session? Ya da başka bir deyişle, ister benim işlevi çağıran PHP komut dosyası session_id()
için bir çağrı yayınladı ve kapalı veya herhangi bir şekilde oturumu yok değil işletim sistemi bunu muhtemelen muhtemelen dondurmak çalışan diğer işlemler tarafından erişilemez böylece oturum dosyasını kilitleme açık tanıtıcı düzenliyor httpd.exe
.
Bu denedim:
if( session_id() ){
session_write_close();
exec('gm convert -resize 100x100 source.jpg target.jpg');
session_start();
}
Ama senaryo hiç oturumları kullanılırsa onlar bu noktada etkin olmasa bile session_id()
, bir değer döndüren fark ettik. Script session_write_close()
ile oturumu kapattı varsa ... benim thumbnailer onu tekrar açılacak!