Skip to content

Zeroplex 生活隨筆

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

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

標籤: PHP

Install Nginx + PHP-FPM on FreeBSD

Posted on 2010 年 9 月 4 日2021 年 3 月 12 日 By 日落 在〈Install Nginx + PHP-FPM on FreeBSD〉中有 1 則留言

因為老舊機器跑 Apache 實在太費力了,不少朋友都推薦 Nginx 來取代 Apache。網路上不少效能測試也顯示 Nginx 使用的系統資源比較少。

Install Nginx from ports:

cd /usr/ports/www/nginx
make config   # select modules you want
make install clean

Install php52 from ports:

 cd /usr/ports/lang/php52
make config   # Enable FPM
make install clean

安裝 PHP-FPM (Fastcgi Process Manager) 後,在 /etc/rc.conf 加入啟動設定並啟動 php-fpm:

echo php_fpm_enable="YES" >> /etc/rc.conf
/usr/local/etc/rc.d/php-fpm start

依照預設值 FPM 會 listen port 9000,可以用 sockstat 看一下是否啟動成功:

$ sockstat
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
www      php-cgi    2736  0  tcp4   127.0.0.1:9000        *:*
www      php-cgi    2735  0  tcp4   127.0.0.1:9000        *:*
www      php-cgi    2734  0  tcp4   127.0.0.1:9000        *:*
www      php-cgi    2733  0  tcp4   127.0.0.1:9000        *:*
www      php-cgi    2732  0  tcp4   127.0.0.1:9000        *:*
root     php-cgi    2731  4  stream -> ??
root     php-cgi    2731  5  stream -> ??
root     php-cgi    2731  6  tcp4   127.0.0.1:9000        *:*

若要修改 listen port 可以開啟 /usr/local/etc/php-fpm.conf,搜尋「listen_address」,設定檔是以 XML 的方式撰寫,把 127.0.0.1:9000 改成自己要得即可。

修改 Nginx 設定檔 /usr/local/etc/nginx/nginx.conf,大約在 60 行左右可以看到「pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000」,將該段落的設定檔取消註解。

另外 Nginx 設定檔有個很怪的地方,就是 fastcgi_param 的預設值不是在網頁目錄底下,要將後方的「/scripts」改成「/usr/local/www/nginx-dist」,這樣 Nginx 才會將網頁目錄底下的 PHP 程式交給 FPM 執行。

設定完畢存檔,/usr/local/etc/rc.d/nginx start 啟動 nginx 就可以弄個 phpinfo 來測試了。

Tags:FreeBSD, 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, 網路架站

文章分頁

上一頁 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 國際 授權條款授權.