訓練家的佈弱格-Patch1.2

The BLOG of trainer



編輯日期:2011-07-10 04:43

類型:網頁設計心得
作者:羽山
文章時間:2011-07-10 04:43:08
瀏覽人數:4638人
標題: 用 php-pecl-imagick 寫新的縮圖功能
網址:http://59-126-75-42.hinet-ip.hinet.net/blog/blog.php?id=1265
內容:
 

在 ptt 的 php 版,有時會看到有高手棄用 exec 呼叫 convert

自己慢慢啃 api 來寫 imagick 的操作~

今天花了些時間,研究了一下 php-pecl-imagick,總算也有一點心得

原來你在網路上找到的  php 使用的 imagick ,指的就是  php-pecl-imagick 這套件

php-pecl-imagick-3.0.0-9.fc11.i586

並不是 php-magickwand.i686

二者語法差滿多的 Orz

之前是伺服器裡裝的是 magickwand,害我一直在試

$dst=new Imagick($file_name);

想說明明就有灌,怎都不能用Orz

之後裝好了 php-pecl-imagick,結果發現圖片是能縮了,但cpu不停的100%

我讀了四張圖,cpu跑出4個 httpd 100~300% 差點嚇死…

而且沒有任何錯誤訊息警告...

我只好再把所有的 code 全拆掉,一行一行試

     $file_name=$_GET['file_name']; //沒事(廢話)

     $dst=new Imagick($file_name); //沒事    
     $dst->thumbnailImage(100,100,true); //爆點

真奇怪,正常縮圖的寫法,居然讓cpu炸了

讓我對自由軟體真是又喜歡又生氣…

於是開始花時間找 imagick cpu loading , thumbnailImage loading , thumbnailImage cpu ...

查了半天,查到一個 libgomp

http://www.webhostingtalk.com/archive/index.php/t-1002911.html

於是 yum install -y libgomp

裝了一堆 c++ 的東西,結果啥事都沒發生

於是我修改了一下程式,改用程式碼來試,不然網頁看的到的errorlog實在太有限

<?

    //test.php

     $file_name=$argv[1];

     $dst=new Imagick($file_name);
     $dst->thumbnailImage(100,100,true);

?>

測試~ php test.php 3wa.png

結果只有一行  記憶體區段錯誤

然後重新下載 php-pecl-imagick 的 srpm 回來重編

yumdownloader --source php-pecl-imagick

rpm -Uvh php-pecl-imagick-3.0.0-9.fc15.src.rpm

cd ~/rpmbuild/SPECS

rpmbuild -ba php-pecl-imagick

結果跑出一堆 pecl 的錯誤...

全都是 記憶體區段錯誤

查看看 dmesg

php[11016]: segfault at bfa01000 ip 00418077 sp bf9fa788 error 6 in libc-2.13.90.so[39c000+187000]

發現了 libc-2.13.90.so 有錯誤~

於是我在 /lib 下發現了這個檔案

rpm -qf /lib/libc-2.13.90.so

glibc-2.13.90-1.i686

在很不想更新這玩意的情況下,我更新了 glibc

yum install -y glibc

經過幾10mb的下載後…

pecl 正常了,可以執行了,但cpu loading 的問題仍未解決,重開httpd也無效

再重編 php-pecl-imagick 然後直接安裝自己編過的這版本的rpm後,總算解決了

---以上一堆題外話---

 

也把之前那支縮圖程式重新用 imagick 寫過

舊的縮圖 small.php

 

http://59-126-75-42.hinet-ip.hinet.net/photo/small.php?w_size=980&compassion=85&file_name=users/shadow/20110209_022145_8.jpg

 

然後新的縮圖 new_small.php

http://59-126-75-42.hinet-ip.hinet.net/photo/new_small.php?w_size=980&compassion=85&file_name=users/shadow/20110209_022145_8.jpg

 

總之大致上該有的功能都作到了,像是半透明字體、縮圖、快取~

然後加了個鬼鬼防錯誤情況發生~XD

 

其實我發現 GD 還是比較快~

同樣一張圖,0.0x 秒 vs 0.xx 秒

履試不爽了

不過我的 GD 是用

     imagecopyresized($dst,$src,0,0,0,0,
                     $new_s_width,$new_s_heigth,
                     $cur_width,$cur_height) or die("error!\n");         


     //畫質雖好,但太慢
     //imagecopyresampled($dst,$src,0,0,0,0,
     //                $new_s_width,$new_s_heigth,
     //                $cur_width,$cur_height) or die("error!\n");

 

    如果改用 imagecopyresampled 畫質雖然好很多,但每張未讀過的圖,都會慢到 1.xx 秒以上…

   目前的 GD 版本,全新圖是  0.1x~0.2x 秒,快取後都幾乎都是 0.03 秒

    總之~如果改天我網站爆到每天上千人瀏覽,我再考慮改用 ImageMagick 做好了

    必竟用 gd 在同一個 thread 下,浪費太多單一線 cpu 資源,分配給 im 應該就可以再多工些

 

題外話...

正常使用下,不應該看到鬼鬼的照片啦...

下一頁有鬼鬼,有被嚇到,或有心血管疾病的,請勿看第二頁資料內容....

看到就算了,嚇習慣後就覺得沒什麼了 XD

 

 

首頁  上十頁  上一頁  1 下一頁    最末頁 (總共有...1頁)

第 1 頁

有話要說  看留言 【0】
其他分類
當月訓練
(2011-07-29)
【FZR 150】四塊錢改善離合器打滑

(2011-07-21)
【網誌】為了生活我可以忍,在背後訐我就不能忍

(2011-07-10)
【網頁設計心得】用 php-pecl-imagick 寫新的縮圖功能

最新訓練
(2024-11-04)
【酷龍 150】酷龍150 換新鏈條 里程:39250km

(2024-10-31)
【機車綜合相關】煞車檢測筆測量電阻範圍

(2024-10-29)
【機車綜合相關】拆胎特工-輪胎拆胎架

(2024-10-25)
【NSR 150】NSR150 更換前煞車油(簡易) 43177km

(2024-10-25)
【網誌】加密文章測試

(2024-10-19)
【本田 MSX-125】MSX-125 更換前輪軸承

(2024-10-18)
【HONDA CBR1000RR】CBR1000RR 側柱維修

(2024-10-15)
【KTM 390】KTM RC390 側柱增加 1.5cm

(2024-10-12)
【NSR 150】NSR150 更換空濾綿 43010km

(2024-10-10)
【NSR 150】NSR150 側柱加高1.5cm