Tag: PHP

MySQL 換算 Unix Timestamp 日期時間

在多時寫程式都會用 Unix Timestamp 儲存時間,好處是可以很簡單作日期計算,以及用不同格式顯示日期。 以前儲存在 MySQL 的日期時間,會擷取後用 PHP 的 date() 函式顯示,但 MySQL 已經內置了用作換算 Unix Timestamp 的功能,用起來很方便,以下記錄一下用法。 UNIX_TIMESTAMP() — 取得目錄 Unix Timestamp: 以前習慣在 PHP 用 time() 函式插入 Unix Timestamp 到 …

RHEL 7 / Centos 7 yum 安裝 PHP 5.5, 5.6, 5.7

我喜歡用 RHEL 及 CentOS 的最主要原因, 是因為 Redhat 對產品的支援周時長達 10 年, 對於生產環境的主機這點很重要, 不用經想準備為系統作升級。但 CentOS 有一個缺點, 就是預設的套件版本較舊, 像 PHP 版本, 除非手動編譯原代碼安裝, 否則可能到系統的生命周期完結, 也不會作主要升級。 現在 CentOS 7.3 的預設 PHP 版本為 5.4.16, 要在 CentOS …

防止 Shell Script 重複執行

Shell Script 對日常系統維護很實用,對於多用戶系統,Shell Script 經常面對一個問題是重複執行,即一個 Shell Script 正在執行時,避免另一個使用者執行。另一個情況是,當 Shell Script 變得複雜及龐大時,放到 crontab 定時執行時 (例如每分鐘執行一次),Shell Script 還未完成上次的執行,就重複自動執行一次。 要防止 Shell Script 重複執行,一般上會用 lock file 及 PID 的方法,不論是 lock file 還是 PID,除了用 Bash …

解決 Nginx 504 Gateway Time-out

當 Nginx 發生 504 Gateway Time-out 時, 一般上原因是一些程式執行需時較長時間, 當執行時間超出 Nginx 的限制時, 便會出現 504 Gateway Time-out 問題, 如果排除了程式上的問題, 解決方法是將執行時限延長 (或者升級主機的硬體也可以)。 首先開啟 Nginx 的網站設定檔, Nginx 將網站設定檔都放在 /etc/nginx/ 目錄下, 下面以 www.phpini.com 為例: # …

同時安裝多個 PHP 版本

現在 PHP 其中一個很大的問題, 是很多個不同的 PHP 版本都有人使用, 對於開發者需要顧及程式碼是否可以在不同版本執行, 而對系統管理員, 就要面對不同程式可能需要不同 PHP 版本。 以下記錄一下在系統安裝不同 PHP 版本, 並可以按需要設定不同 Virtualhost 或目錄, 可以使用不同 PHP 版本的方法, 以下會以 CentOS 7 及 Apache 作為安裝環境。 首先在系統用 YUM 安裝好 Apache …

安裝 MySQL 後的優化

以下是安裝 MySQL 後可以嘗試的優化項目,建議逐樣項目修改,以檢視每個項目的優化成效,而大部份的設定可以在運行中 MySQL 設定,不用重新啟動 MySQL。 innodb_buffer_pool_size: 這個設定是 innodb 儲存引擎資料庫,所使用的資料及索引快取,根據記憶體的大小䀆量設定大一點,可以減低讀取資料時從硬碟讀取的次數。如果是獨立的 MySQL 伺服器,可以這樣設定: 系統 8GB 記憶體: 5GB – 6GB 系統 32GB 記憶體: 20GB – 25GB 系統 128GB 記憶體: 100GB – 120GB …

找出屬於個別帳號檔案並 chown

今天將一台 CentOS 6 伺服器內所有網站,輚移到另一台 CentOS 7,轉移過程連同檔案權限, owner 及 group 都一同複製,測試後發現多數網站都運作正常,唯獨有用 PHP 建立的檔案及目錄便有寫入失則的問題。 查看了檔案的權限是正確的,但用 “ls -l” 查看那些出問題的檔案及目錄,看到 owner 不是顯示 “apache”, 而是顯示 “80”, 原來 CentOS 6 時 Apache 帳號的 uid 是 80, …

閏年計算公式

一般講法是每四年就有一年是閏年, 但這個講法只符合大部份的閏年, 有些年份還是不會每四年一閏的。 在求學時期學寫程式時, 就寫過這樣的程式, 很簡單檢查該年是否閏年, 而閏年的規則有 2 條: 1. 年份可以被 400 整除, 是閏年. 2. 年份不能被 100 整除, 但可以被 4 整除, 是閏年. 現在很多程式語言也不用測試上面的規則, 因為程式語言的開發者已經寫好, 例如 PHP 的 date() 函式, 這樣可以檢查是否閏年: …

CLI 執行 PHP 時自訂 php.ini 設定檔

很多情況需要在 CLI 下執行 PHP, 例如要執行 /root/my-script.php, 只要執行以下指令便可以: # php /root/my-script.php 在預設的情況下, 執行以上 PHP script 時, 會跟著預設的 php.ini 有著相同的設定。在 Apache 還好, 可以用 php_admin_flag 設定個別 VirtualHost, 但在 CLI 就不可以用 php_admin_flag 設定了。 以下是在 …

PHP 連接 MongoDB

要用 PHP 連接 MongoDB 資料庫, 需要先安裝 PHP Mongo Driver, 以下文章會以 CentOS 為例, 透過 EPEL 安裝 PHP Mongo Driver, 並用 PHP 連接 MongoDB 資料庫, 示範新增、修改及刪除資料。 先加入 EPEL Repl: 執行指令安裝 PHP …