Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: PHP

PHP 加速 on FreeBSD (pecl-APC)

Posted on 2010 年 8 月 3 日2021 年 3 月 12 日 By 日落 在〈PHP 加速 on FreeBSD (pecl-APC)〉中尚無留言

這次為了 WordPress 3.0 花了不少時間搞 tuning,後來 cookys 大大跟我說 eaccelerator 效果不大,可以改用 APC 加速。

Install APC on FreeBSD:

cd /usr/ports/www/pecl-APC/
make install clean

安裝好以後修改 php.ini,參數在 /usr/local/share/doc/APC/INSTALL 有詳細說明。

apc.enabled=1  ; 1 as enable, 0 as disable
apc.shm_segments=1  
apc.shm_size=128  ; Shared memory size in MB
apc.ttl=7200  ; TTL for cache
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX  ; 6 個 X 請勿修改
apc.enable_cli=1

設定完畢後重新啟動 Apache。

使用 phpinfo() 後若看到 APC 相關資訊表示 APC 已經可以使用。接著複製 apc.php 到 www 目錄下並設定帳號密碼,便可以查看 APC 的統計資訊:

cp /usr/local/share/doc/APC/apc.php /usr/local/www/apache22/data/

設定帳號密碼:

defaults('ADMIN_USERNAME','user_id');
defaults('ADMIN_PASSWORD','user_password');

左方圓餅圖代表記憶體情況,右方 Hits 代表使用到快取,Miss 表示要求的程式不在快取內。

安裝好 APC 後自己拿 JMeter 做測試,Wordpress 3.0 的首頁在安裝 APC 後大概快了 200 ~ 500ms 左右,感覺算快了不少,不過一部分原因是 JMeter 設定全部都跑去抓首頁,建議加上亂數元件讓 JMeter 隨機讀取網頁會更準。

參考資料:安裝 PHP APC 加速網頁速度 | 小惡魔
http://blog.wu-boy.com/2008/06/05/275/

Tags:FreeBSD, PHP, 網路架站

PHP 5.3 函式被標記為「Deprecated 」

Posted on 2010 年 6 月 3 日2021 年 3 月 12 日 By 日落 在〈PHP 5.3 函式被標記為「Deprecated 」〉中尚無留言

前陣子 portmaster -aDG 以後一堆服務噴「function deprecated」,後來才知道 /usr/ports/lang/php5 目前是 PHP 5.3,更新後有不少函式被標記為 deprecated。

PHP 5.2 在 FreeBSD Ports 有另外被分出來放在 /usr/ports/lang/php52,先將原有的 make deinstall 再到 php52 make install clean 即可。

ps. 小弟無知,以後不敢隨便更新了 Orz
Tags:FreeBSD, PHP, 網路架站

Apache、MySQL、PHP 效能最佳化

Posted on 2010 年 1 月 23 日2021 年 3 月 12 日 By 日落 在〈Apache、MySQL、PHP 效能最佳化〉中有 3 則留言

Optimize PHP, Apache & MySQL for performance « webjawns.com
http://webjawns.com/2010/01/optimize-php-apache-mysql-with-tuner-scripts-best-practices-and-more/

Tags:Apache, MySQL, PHP, 網路架站

GD vs. Imagick (ImageMagick)

Posted on 2010 年 1 月 10 日2021 年 3 月 12 日 By 日落 在〈GD vs. Imagick (ImageMagick)〉中有 2 則留言

由於之前聽到網路上傳言 ImageMagick 函式庫的效能比 GD 還要好,不過找不到實在測試資料,所以自己來跑測試。

測試方式是由自己的一張全景照片 (512 x 512, 340KB) 分別用 GD 與 ImageMagick 的縮圖函式進行縮圖 (256 x 256),並紀錄執行函式所需要的時間。


產生縮圖用的程式碼分別如下:

Imagick.php:

<?php
function mtime()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}
$img = new Imagick();
$img->readImage('lenna.jpg');

for($a=0;$a<5;$a++){
   $start = mtime();
   $img->resizeImage(256,256,Imagick::FILTER_LANCZOS,1);
   $stop = mtime();
   echo ($stop - $start)."n";
   exec('sleep 1');
}

$img->writeImage('s_imagick.jpg');
$img->clear();
$img->destroy();
?>

gd.php:

<?php
function mtime()
{
          list($usec, $sec) = explode(" ", microtime());
          return ((float)$usec + (float)$sec);
}

$src = imagecreatefromjpeg("lenna.jpg");
$thumb = imagecreatetruecolor(256,256);
$src_w = imagesx($src);
$src_h = imagesy($src);

for($a=0;$a<5;$a++){
   $start = mtime();
   imagecopyresampled($thumb, $src, 0, 0, 0, 0, 256, 256, $src_w, $src_h);
   $stop = mtime();
   exec('sleep 1');
   echo  ($stop - $start)."n";
}

imagejpeg($thumb, "s_gd.jpg");
?>

由於 PHP 原本的 time() 精確度只有到秒,對於這種小圖檔實在不夠用,於是找了 microtime() 來紀錄時間,呼叫 mtime() 以後會傳回當時的毫秒數並以 float 儲存,縮圖完畢在將結束時間與開始時間相減取得執行時間。

分別執行五次並紀錄結果。

使用 ImageMagick 函式庫:

0.050060033798218
0.048804998397827
0.051737070083618
0.048964977264404
0.048758983612061    平均:0.0496652126312256 秒

使用 GD 函式庫:

0.094849109649658
0.095477104187012
0.096488952636719
0.097059011459351
0.098549127578735    平均:0.096484661102295 秒

接下來比較原始圖檔以及縮圖品質。


原始圖 340 KB (點圖放大)


ImageMagick resizeImage() 產生出來的縮圖 50 KB


GD imagecopyresampled() 產生出來的縮圖 12 KB

產生出來的縮圖感覺 ImageMagick 的銳利度較高,可由帽子上的紋路看出。在這次測試時 ImagickMagic 些微勝出。

前一次測試時使用相機拍攝的 2.7M 全景圖製作 3/10 的縮圖,反而是 ImageMagick 較慢,時間接近 GD 的二倍,但是銳利度仍然是 ImageMagick 較高。但 ImageMagick 的銳利度是可以調整的,如果將銳利度降低不知速度是否會加快。

Tags:PHP, 網路架站

縮短網址 vs. Hash

Posted on 2009 年 8 月 8 日2021 年 3 月 12 日 By 日落 在〈縮短網址 vs. Hash〉中有 3 則留言

一直到剛剛才想通為什麼大多數的縮短網址會使用 Hash 產生 key,果然不先死過一次不知道為什麼要這樣作。

先從 key 開始起吧,為了讓 key 更短通常會使用更多的文字或符號,從數字、英文大小寫甚至特殊符號。假設使用數字和英文大小寫作組合,每一位數都有 62 種組合 (10 + 26 + 26),用四個位數的話可以儲存約一千五百萬比資料,這對我這種小網站應該很夠用了。

還沒想通資料量和 hash 有何關係?那就來看看新增時到底要作哪些事情:

  1. 查詢資料是否已經存在
  2. 產生網址與 key 的對應
  3. 儲存結果

問題很明顯出在第一步驟,一千萬筆資料 query 一次到底要花多久的時間?有作索引也要花超過十秒,沒作索引花個半小時可能也算快。

如果將步驟改成這樣:

  1. 將網址作 Hash
  2. 使用 Hash 的結果查詢資料是否存在
  3. 檢查是否發生碰撞
  4. 儲存結果

在第一步先產生 hash 結果就可以減少搜尋的範圍,範圍縮小就可以減少第二步驟查詢所需要的時間。

現在開始後悔沒有好好學演算法了,我要怎麼自己寫一個 hash 函式出來啊???

Tags:PHP, 生活雜記, 資訊學習

文章分頁

上一頁 1 ... 20 21 22 ... 26 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.