Keeping your heroku server awake
最近發現heroku server休眠的速度實在快的嚇屎人,記得去年還只要一天有人連上去就OK,沒想到現在大概1分鐘沒人連就會休眠server…
以前似乎可以用個addon,叫做"New Relic",去一直ping,進而記錄伺服器的狀態,讓server一直是醒著的狀態,但經測試後發現沒用!
最後還是用了最笨的方法,仿造crawler的方式,設定cronjobs每分鐘去拜訪一次網頁,抓取內容使伺服器一直保持醒著的狀態。程式碼如下:
<?php
$urls = array("http://webcontest.mirlab.org", "http://webprogramming.mirlab.org");
for ($i=0; $i<count($urls); $i++)
{
getContent($urls[$i]);
}
function getContent($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$data = curl_exec($curl);
curl_close($curl);
}
?>
接著,只要設定cronjobs在自己其他的server上一直去執行這個php script。到terminal輸入
crontab -e
加入
* * * * * /usr/bin/php /var/www/wakeupheroku.php
即可。