Category: Programming

PHP 控制 QPS (Query Per Second) 的寫法

寫個簡易的範例,如果送出 REQUEST 很頻繁,卻不想把對方打死,可以控制一下 QPS ,單位是毫秒。

Posted in Programming

WTF 系列 – PHP 的 Array Concatenate

這篇文章放在草稿好久了,今天抽空把他寫完。 — PHP 的 Array Concatenate 有兩個方法一個是用 array_merge 另一個是用運算子 + (array union operator) array_merge 可以把兩個 array 合併起來,但是行為需要注意, array_merge($a, $b) 當 array 被當作 map 使用時,他的 key 是字串或是數字處理起來結果不同。 當 key 是字串:會把 $a 附加在 $b 的最尾端。如果 $a 和 $b 有相同的 key 的話,後者會覆蓋掉前者的值。

Posted in Programming

IMGUPUP – A simple PHP image uploader

介紹一個我寫的開放原始碼專案:IMGUPUP 原本我只是想寫個 script 支援圖片上傳而已,但不小心越寫越大,於是最終就變成一個相簿了。目前功能很弱,畢竟開發目的主要是滿足合我自己需求,所以如果你也有用,而且想要新功能,歡迎在 github 的 issue 提出,當然也歡迎送 PR 過來。 我從 Gallery 2 的時代就開始用它當成我的相簿,差不多六年前升級到 Gallery 3 ,為了和 Gallery 2 向下相容,我還寫了一個外掛 (連結一) 。當時管理的照片數量差不多是五千多張。不過 Gallery 3 有幾個很討厭的問題: 1. 相片和相簿的網址是根據階層關係決定的,舉例來說:相簿的網址會像是這樣: http://host/相本A/相本B/ ,而相片的網址也繼承了這個概念,於是就更長了。 2. 檔案實際存放的路徑也是根據階層關係決定的。相簿的階層直接對到實體路徑的階層。 3. 為了 SEO 的緣故,會拿相片/相簿的標題來當網址 以上三者的設計對於一般人來說或許很親切,但對我來說非常痛苦,因為我很喜歡把相簿搬來搬去,或是重新分類。而在這個過程中,所有網址都會改變,但這不是我所希望的,因為相片網址一改,我文章裡面的連結就得跟著改,然後就… 有鑑於 Gallery 3 有以上缺點,且

Posted in Programming

簡單的 benchmark function

在 php.net 的 microtime() 範例看到的,果然好用。

Posted in Programming

系統對於時區的處理

關於時區,在跨時區的系統串接的處理上,可以參考 ISO 8601 date 裡面的 “Combined date and time representations” 和 “Time offsets from UTC” 兩個 section 。

Posted in Programming

PHP 在 callback function 使用超過一個以上的變數

這個問題在 PHP 5.3 非常好解決,因為有 anonymous function 可以用,但如果環境還停留在較早以前的 PHP 的話,可以用以下解法 workaround:

anonymous function:

Posted in Programming

WTF系列 – PHP 的 echo 敘述

PHP 是個非常有彈性的語言,這件事情充分體現在 echo 敘述上面。 但也因為這個「彈性」,實際上卻會造成維護和理解上的困難。

Posted in Programming

WTF系列 – PHP 的 Functions 以及 Class Methods 大小寫問題

PHP 的 Variable Name 是 Case Sensitive 的,這沒什麼問題。 不過 PHP 的 Function Name 是 Case Non-sensitive 的。

Posted in Programming

WTF系列 – PHP 的 Type Casting 以及 Comparison Operators

PHP 非常愛幫使用者默默地做型別轉換 (Type Casting) ,我在 WTF 系列 – PHP 的 MAP 鍵值型態問題 裡面有提到一些對於 MAP 鍵的自動型別轉換問題。

Posted in Programming

PHP 設計模式 – Singleton

因為有需要讀取 config ,剛好 Singleton Pattern 很適合這種使用情境,所以就寫了一個 PHP 版的 Config Tool 來用

Posted in Programming