發表文章

目前顯示的是 五月, 2013的文章

讓 cron 幫你做遠端 http 呼叫

cron 是 linux 中用來執行排程的排程表 用法在很多網站上面直接就可以找到,就不綴訴了。 不過因為常常用到的功能其實是要去呼叫某個 API 去執行一個後端運算所以還是針對這件事情寫個範例吧

基本寫法:
* * * * * /usr/bin/curl --silent 網址 這樣就會每分鐘都去執行一次網址,不過這樣做有個缺點,如果你要去執行的網頁剛好有輸出內容,那麼所有輸出的內容就會被丟進 corn 的 log 裡。這樣會造成系統的肥大。如果印出來的東西其實沒什麼參考價值那麼其實我們可以把他丟掉

* * * * * /usr/bin/curl --silent 網址 >/dev/null 2>&1 & 這樣就會把資料直接不存


Linux Crontab 定时任务 命令详解

AWS 的 S3 在 php 上的實作

導讀:
AWS - amazon 推出的雲端服務
S3 - AWS的雲端儲存服務
bucket - S3上的容器,可以無限多開但是只能開在根目錄(他沒有所謂目錄概念喔),而每一個bucket 都可以設定要檔案伺服器存在哪個地區,以台灣來說通常放在東京會比較快
object - bucket 上的每一個檔案都是一個 object ,如同上面所提他們沒有資料夾觀念,但是他們可以支援 / 作檔名,因此如果你自己本地端有檔案是 /var/www/html/file/aaa/123.zip 你大可把檔名設定為 file/aaa/123.zip 這樣他也是接受的@@

更多對於 S3 的認識:
這是要錢的服務(好像個人可以有限制的免費~),可以用API把東西丟到雲端伺服器上,然後設定各種權限。
小灰狼這次遇到的狀況就是客戶需要把檔案連結加上一支金鑰,避免只要拿到網址就可以到處亂給人家下載。這個功能的需求還滿普遍的


實作:
1.先註冊服務(這個文件好找~不說)
2.取得 access_key 和 secret_key 這個也找的到作法不說
3.建立一個bucket
3.下載第3方函式庫(為什麼用第3方,當然是原廠的爛阿)
amazon-s3-php-class
第3方函式庫文件

因為文件太完整所以懶的看的人直接往下看常用的實作

A. 把檔案(object)放到容器裡(bucket)
if (!defined('awsAccessKey')) define('awsAccessKey', 'awsAccessKey'); //輸入 awsAccessKey if (!defined('awsSecretKey')) define('awsSecretKey', 'awsSecretKey'); //輸入 awsSecretKey $s3 = new S3(awsAccessKey, awsSecretKey); // 宣告初始化 S3 這個 class $s3->setEndpoint('s3-ap-northeast-1.amazonaws.com'); // 設定連接的伺服器 …

PHP 取得資料夾底下的所有檔名 glob

glob這個函式用法很簡單,但是卻很強大
用法:

glob("資料夾路徑");
如此一來,就會將這個資料夾內的所有檔案用陣列回傳檔名,長這樣: Array ( [0] => 檔案1.txt [1] => 檔案2.html [2] => 檔案3.mp3 [3] => 檔案4.png )


如果說我要抓取某些檔案規則的話,可以用*來表示萬用字元
glob("資料夾路徑/*.txt"); 這樣的話,就只會印出: Array ( [0] => 檔案1.txt )

Fedora14 YUM 安裝 MySQL 5.5

話說...雖然 yum 很好用,很簡單的就可以安裝完成大部份我們會用到的東西。但是如果遇到套件版本較新的就沒辦法了嗎?這樣如果要安裝依些新技術來玩玩該怎麼辦呢?

還是有辦法的
只要多安裝一個東西"Remi"簡單的說...yum預設只幫我們安裝他認為最沒有問題的版本,而如果我們想要新一點的版本說不定就會在 remi 中找到

rpm -Uvh http://rpms.famillecollet.com/remi-release-14.rpm
接下來在安裝套件軟體的時候就只要特別下參數要求要remi 版本的就可以了
yum --enablerepo=remi install httpd mysql mysql-server php php-common

參考資料
Install Apache, MySQL 5.5.30 & PHP 5.4.12 on RHEL/CentOS 6.4/5.9 & Fedora 18-12