ブログTOP > 開発環境・技術選定 > HDD残り容量をPHPからGrowlに通知する方法

2009年12月14日

HDD残り容量をPHPからGrowlに通知する方法

sp_st_air_3.jpg

何ヶ月か前からMacBookのハードディスク容量が残り数GBというラインをうろうろしていて、FirefoxやSafariなどでいっぱいタブを開いたり、長時間起動していると残りが0Kbになってしまうような自体に陥っていました。

使わないプリンタドライバを消したり、聞き終わったポッドキャストをこまめに消したり、Disk Inventory Xで見ながら掃除したりといろいろしていたのですが、根本的に解決出来ません。


0Kbになると、なーんも出来なくなるし、ほっとくとすぐにメモリ不足で操作出来なくなってしまいます。
タイミングによっては、さっきまでやっていた作業が保存されていなくて、痛い目にあってしまいます。
ものすごーく不便です。

iTunesを使うのをやめてmp3はすべて外部HDDに移動させるぐらいしないと解決しなそうな問題ですが、それはそれでライフスタイルにも関わることなので難しい。


そこでとりあえず、0kb状態だけは阻止しようと、OSXのメニューバーに残り容量を表示するフリーソフトを探したのですが、見つからず。。。
仕方ないので、Growlで通知する仕組みを作ろうかなと思いました。

フローとしては、
cron -> PHP -> PEAR::Net_Growl -> Growl
という感じです。


まず、MAMPにPEARを入れ直すところからスタート。

curl http://pear.php.net/go-pear> pear.php
sudo php -q pear.php

PEARインストール中に訊かれるパス設定はこんな感じ。

1. Installation prefix ($prefix) : /Applications/MAMP/bin/php5/lib/php
2. Temporary files directory : $prefix/temp
3. Binaries directory : /usr/bin
4. PHP code directory ($php_dir) : $prefix
5. Documentation base directory : $php_dir/docs
6. Data base directory : $php_dir/data
7. Tests base directory : $php_dir/tests

Net_Growlをインストール。

sudo /Applications/MAMP/bin/php5/bin/pear install net_growl-beta

システム環境設定>Growlから、「ネットワーク」タブ内の「受信される通知を聞く」と「リモートアプリケーション登録を許可」にチェック。せっかくなのでパスワードも適当に。


<?php
require_once 'Net/Growl.php';

$hdd = new HDD(disk_free_space('/'));

$title = 'MacBook HDD';
// $body = number_format($hdd->mb,1).' MB ('.number_format($hdd->kb).' KB)';
$body = number_format($hdd->mb,1).' MB';

$growlApp = new Net_Growl_Application("HDDnotifier by taichistereo", array("NotifyA"), '設定したパスワード');
$growl = new Net_Growl($growlApp);
$growl->notify("NotifyA", $title, $body);

// echo $body;

class HDD {
    var $b;
    var $kb;
    var $mb;
    var $gb;
    
    function HDD($p) {
        $this->b = $p;
        $this->kb = ($this->b)/1024;
        $this->mb = ($this->kb)/1024;
        $this->gb = ($this->mb)/1024;
    }
}

ブラウザでこのスクリプトにアクセスすると、初回はキーチェーンアクセスからパスワードを使う許可を求められます。
「常に許可」をクリックすると、見事Growlからハードディスク残り容量が通知されました!

最後にcrontabを編集します。
定期的に容量を通知させます。

crontab -e

下記を追加。
さっきのスクリプトの場所は、MAMP配下の/Applications/MAMP/htdocs/growl/index.phpです。

 */13      *       *       *       *       /opt/local/bin/wget -q -O /Users/ユーザ名/wget_HDDnotifier.html http://localhost/growl/

ユーザーのホームディレクトリに、アクセスする都度「wget_HDDnotifier.html」というゴミファイルが落ちてきますが、気にしない方向で。
MacPortsで入れたwgetを使っていますが、curlでもいいでしょう。
ためしに、なんとなく素数である13分ごとに設定。うざいかな?


これで、うちのMacBookが定期的に残り容量をつぶやくようになりました!

しばらく様子を見てみたいと思いますが、「のこりが何MB以下になったら通知する」とかそういう仕様のほうがいいかもしれません。
あるいは思い切って毎分通知させてしまっても、逆にうざくないというか、MacBookのハートビートっぽくて慣れてくるかも知れません。


さっき「つぶやく」と書きましたが、Twitterが流行ってるイマっぽくてちょっと楽しいかも。
TwitterAPI経由でうちのMacBookに残り容量つぶやかせるっていうアホなこともおもいつきますが...アホなのでやめときましょう(^o^)


■ 参考にしたサイト


Webデザインと私: MAMPにPEARをインストールする手順
http://14ch.jp/blog/08/07/0807201752.html

ネイティブMacアプリをPHPで操作しよう - @IT
http://www.atmarkit.co.jp/fcoding/articles/macxphp/03/macxphp03c.html

Net_Growl を使ってみた - やこ〜ん SuperNova2
http://d.hatena.ne.jp/saiya_moebius/20090701/1246392377
このエントリーをはてなブックマークに追加
posted by taichistereo at 06:16 | Comment(0) | 開発環境・技術選定
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
カテゴリクラウド
トップページへ戻る
Blog Widget by LinkWithin