Tag: PHP

升級到 PHP 7.2 後的效能表現

近幾年的伺服器都是使用 CentOS 預設的 PHP 版本, 而 CentOS 7 預設的 PHP 版本仍是 5.4, 而 PHP 7 對於性能提升也是相當明顯的。近期將本網的 PHP 版本升級到 PHP 7.2, 以下是用 RRDTool 監察的 Load Average 數據: 在四月至六月間是使用 4GB RAM 的 …

PHP 開啟及關閉錯誤訊息輸出

要開啟或關閉 PHP 的錯誤訊息有幾種方法, 分別是在 php.ini 內設定, httpd.conf 及 .htaccess 設定, 或者在 PHP 程式內設定, 以下是各種方法的設定方法。1. php.ini在 php.ini 一般預設路徑在 /etc/php.ini, 在 php.ini 內找到 display_errors, 設定為 On 是開啟錯誤信息, Off 是關閉輸出:另一個可以設定的選項是 error_reporting, 它可以設定輸出那些錯誤提示, 常用的設定有:修改 …

RHEL / CentOS 安裝 OPcache 提昇 PHP 效能

OPcache 在 PHP 5.5 (預設沒有開啟)開始內建在 PHP, 前身是 Zend Optimizer, PHP 5.2, 5.3 及 5.4 則要透過安裝 PECL extension 安裝。它的作將已經編譯的 PHP Script 儲存在記憶體, 當下次存取 PHP Script 時不用重新編譯, 這樣便可以提高 PHP 的效能。以下是在 CentOS 7 …

RHEL / CentOS 7 安裝 PHP 7.2

目前 PHP 最近版本是 7.2, 但如果使用 RHEL 及 CentOS 7 預設的 YUM 安裝, 只停留在 PHP 5.4, 以下文會介紹用 Remi 及 EPEL Repository 安裝 PHP 7.2 的方法, 以下方法適用於 RHEL / CentOS 7.首先下載 EPEL …

PHP 用 curl 取代 file_get_contents()

PHP 要擷取其他網頁的資料,最方便的方法是用 file_get_contents() 函式,以下程式碼即可完成:如果使用量不高,那麼用 file_get_contents() 沒什麼問題,但如果 PHP 擷取其他網頁內容的頻率很高,便建議改用 curl 完成了。因為 curl 的效率比 file_get_contents() 高,以下是 curl 的例子:

PHP mail() 設定 Return-Path

在 PHP 上使用 mail() 發送電郵,如果沒有正確設定 Return-Path, 發出的郵件會使用系統的主機名稱,例如 apache@hostname.server, 以下是程式碼:在收到的郵件會看到寄件者是 from@example.com, 但當按下回覆時,會使用系統的主機名稱,除了回覆地址名,也會有部郵 email server 拒收,會在 email server 的紀錄檔出現 “invalid sender MX”。原因是郵件的 Return-Path 並沒有使用 PHP 的 Return-Path 設定,郵件的 source 可以看到:Return-Path: Delivered-To: 要解決只要在 …

vim 把 Tab 轉換為 4 Space

以前習慣用 Tab 來做縮排,在用 Sublime Text 沒什麼關係,Tab 跟 4 個空格的長度一致,但近年經常用 vim 直接在 CLI 寫程式,當程式需要多層判斷式或迴圈時,很多時在終端機會看得很辛苦,因為在 vim 顯示 Tab 會比 4 個空格的距離還長。所以還是用 4 個空格取代 Tab 較方便,以下是在 vim 及 Sublime Text 按下 Tab 鍵時,自動用 …

JavaScript 搜尋並取代字串

在 JavaScript 做搜尋並取代字串可以用 replace() 來做, 例如:上面的 string 變數是 “Hello Microsoft!”, 而變數 result 會變成 “Hello Linux!”以上做法很簡單, 但最大的問題是, 只會取代第一個符合條件的字串, 例如:上面只會將第一個 “Microsoft” 取代為 “Linux”, 第二個不會取代, 要將全部字串取代, 可以用 regular expression 做, 有以下兩種寫法可以用:方法一: 方法二:以上兩種寫法都會將字串內所有 “Microsoft” …

PHP 查詢 IP 所屬國家

要查詢 IP 所屬國家, 一般上會用 IP 資料庫查詢, 網上也有一些網站可以免費查詢, 但如果想在自己的 PHP 程式, 查詢 IP 所屬國家, 便需要下載一些 IP 轉國家的資料庫, 有付費及免費。另一個較簡單方便的做法, 是使用 API 查詢, 以下會示範使用 freegeoip.net 的免費服務查詢 IP 所屬國家的方法。freegeoip.net 把供 CSV, XML 及 JSON …

解決 PHP 錯誤 – Allowed memory size exhausted

PHP 其中一個常見的錯誤 “Allowed memory size exhausted”,這是由於執行的 PHP 程式使用的記憶體超出 PHP 設定的限制,要解決可以很簡單地修改 php.ini 檔案內的 memory_limit 選項即可。首先開啟 php.ini,在 RHEL 及 CentOS 用 yum 安裝的 PHP,預設路徑是 /etc/php.ini: # vi /etc/php.ini 找到 “memory_limit” 的一行,將原來的 128M …