訓練家的佈弱格-Patch1.2

The BLOG of trainer



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

類型:網頁設計心得
作者:羽山
文章時間:2011-07-10 04:43:08
瀏覽人數:4464人
標題: 用 php-pecl-imagick 寫新的縮圖功能
網址:http://demo.3wa.tw/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://demo.3wa.tw/photo/small.php?w_size=980&compassion=85&file_name=users/shadow/20110209_022145_8.jpg

 

然後新的縮圖 new_small.php

http://demo.3wa.tw/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-09-15)
【FZR 150】FZR維修-大閔廢鐵號

(2024-09-11)
【遊戲 / 生活】更換新的濾水器水龍頭

(2024-09-04)
【NSR 150】NSR150 大燈燈炮更換

(2024-09-01)
【KTM 390】KTM Duke 390 安裝空濾盒、水箱水、油箱、試發動

(2024-08-31)
【KTM 390】KTM Duke 390 引擎上車、節流閥安裝、空濾盒修補、單向閥思考

(2024-08-30)
【機車綜合相關】買了一組盜版牧田DTW1002

(2024-08-25)
【KTM 390】KTM Duke 390 汽門間隙檢查、凸輪軸安裝、汽缸蓋、機油壓力開關

(2024-08-24)
【KTM 390】KTM Duke 390更換內鏈排骨

(2024-08-17)
【KTM 390】KTM Duke 390內鏈排骨問題查修-清洗篇

(2024-08-10)
【KTM 390】KTM Duke 390內鏈排骨問題查修-中(落引擎)