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

即可。