php:browser cache

網站上的一些js,css,image檔,如果設置browser cache,performance會更好。

在php設置browser cache很簡單,大概如下:

Apache性能調效,KeepAlive

關於Apache的keep-alive,主要有三個參數:
KeepAlive
MaxKeepAliveRequests
KeepAliveTimeout

關於這三個參數的解說,可以參考這裡:http://httpd.apache.org/docs/2.0/en/mod/core.html#keepalive

apache預設KeepAlive是打開的,如果妳沒開KeepAlive,那麼你每一個request都會重新一個connectiion,這對cpu來說可能有點負擔。

所以如果把KeepAlive打開,而你的MaxKeepAliveRequests又夠大,當client再download你server上的東西時(例如css.js.images…等等),就有可能再一個connection裡全部做完,而且對User來說體驗會比較好,因為等待的時間變短了。

不過KeepAlive打開也有缺點,它可能會造成記憶體使用增加,因為apache的程序需要等待下一個requests進來,所以connection會保持打開,直到你設定的keepAliveTimeout的時間到了為止。

所以KeepAlive主要有以下優缺點:
優點:
一、較好的performance
二、減少cpu使用量
缺點:
一、可能造成記憶體使用量增加

如何看一個網站有沒有設定KeepALive?開一下console就可以看到了。
螢幕擷圖存為 2014-05-29 02:57:35

一般來說網站我都會把KeepALive設On,因為performance會變好。
而MaxKeepAliveRequests我會調到可以超過網站頁面的所有requests數,這可以因網站不同而異,如果你有很多頁面包含一堆檔案,例如圖片,那麼可能就需要調高一點。
至於KeepAliveTimeout我不會設太高,因為設太高可能會cost太多記憶體使用量。

參考文章:
1.Apache Performance Tuning: KeepAlive to remove latency

DDOS軟體工具清單

一、DDoSim (Linux) : http://tinyurl.com/4xe3vjk
二、Loris :http://ha.ckers.org/slowloris/
三、Apachekiller : http://pastebin.com/9y9Atijn save as “whatever.pl” http://www.activestate.com/activeperl/downloads
四、pyloris: http://sourceforge.net/projects/pyloris/ |
參考1: http://pastebin.com/MTyHYXJe
參考2:http://motoma.io/pyloris/
五、hping : http://www.hping.org/download.php
六、Qslowloris(Windows) : http://www.megaupload.com/?d=3DV6R4ZL
七、Tor’s Hammer : http://packetstormsecurity.org/files/98831/Tors-Hammer-Slow-POST-Denial-Of-Service-Testing-Tool.htmlpwnt softwarez.

文章參考:
1.http://pastebin.com/shzUp9m9
2.http://www.r00tsec.com/2012/02/ddos-tool-list-from-anonymous.html

php-facebook找出某個網頁的facebook按讚數

參考文章:
1.Get Number of Facebook Likes for a URL

php自己實作file cache

以下為自己製作五分鐘file cache程式

參考文件:
1.filemtime
2.file_put_contents
3.5-minute file cache in PHP

Ubuntu架設Vpn server

以下為在Ubuntu上架設vpn server的幾個步驟,架設的是pptpd,做點筆記:

最後記得開1723這個vpn的port,不然會連不上。
如果有任何連線問題,可以去/var/log/syslog看錯誤訊息

如果出現MPPE required but peer negotiation failed 這個錯誤訊息
表示你Vpn連線時要勾選MPPE加密

接下來如果你要在Ubuntu下連線至Vpn,需要設定一點東西如下
螢幕擷圖存為 2014-05-15 11:47:58
之後點選進階,將MPPE那個選項打勾
螢幕擷圖存為 2014-05-15 11:50:51

最後儲存離開,試著連線看看,應該可以連上了。

只是,我連上遠端設好的Vpn server,發現速度超級超級慢…….
可能是因為遠端機器是放在東京,改天再來想辦法。

參考文件:
1.http://www.netadmin.com.tw/article_content.aspx?sn=1109020002
2.http://gsyan888.blogspot.tw/2009/11/ubuntu-vpn-server.html
3.http://carl830.pixnet.net/blog/post/68143721-ubuntu-%E6%9E%B6%E8%A8%ADvpn-server-with-pptp
4.Ubuntu vpn 設定 (pptp Server)
5.Ubuntu VPN连接失败解决方案

Cakephp:多國語系網站建制

一般網站擴張到國際都要搞多語系, 以下是cakephp多語系建制的步驟。

假設你的兩個Domain分別是:
1.www.your-site.com (英文)
2.zh-tw.your-site.com (繁體中文)

step1.修改你的bootstrap.php,設定你的config language

step2.修改所有你要轉換的字串
例如有一串字 ‘購物車’,將它修改成以下:

step3.設定console cake

step3.產生pot檔

step4.將default.po放置到正確路徑&翻譯
如果你的Config.language是eng,它會去找app/Locale目錄下的eng這個目錄。
如果你的Config.language是zh-tw,它會去找app/Locale目錄下的zh-tw這個目錄。
將剛剛的default.pot放到app/Locale/eng/LC_MESSAGES目錄下,檔名改成default.po
接下來編輯default.po

如果你還有更多語言,跟上面步驟一樣,放到Locale對應的目錄下即可。

另外還有其他方式可用,例如__d(‘domain’,’購物車’)
domain可以讓妳指定,如果你用__d,生出來的就會是domain.pot,給你要指定的domain做轉換生成pot檔案。

以上是多國語系建制簡略說明。

參考文件:
1.http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html
2.http://book.cakephp.org/2.0/en/console-and-shells.html
3.http://book.cakephp.org/2.0/en/console-and-shells/i18n-shell.html