会社のネットワーク機器の死活監視をする為に作成しました。
サービスとして稼働し、登録されたアドレスに対して定期的にping測定を行います。
測定するアドレスや、設定はSQLiteのデータベースを介して行います。
SQLiteのデータベースは C:\ProgramData\PingService\PingService.json に記載されます。
PupSQLiteでデータベースを開いてみます。

PingService.dbには、configsとpingsというテーブルが存在します。

configsには設定が登録されています。
- TaskCount : 複数同時にping測定を行うので、同時実行をいくつにするかの設定です
- PingInterval : 前回測定してから何秒経ったら次を測定するか、測定間隔の設定です(確実にこの間隔で測定される保証はありません)
- PingTimeOut : 測定時にpingのタイムアウト時間(ミリ秒)

pingsには測定するアドレスを登録し、測定結果が保存されます。
試しに、「192.168.8.1」を登録してみます。
insert into pings (host) values ('192.168.8.1')
を実行します。
pingsを確認してみます。

pingsにインサートされ、PingServiceによって測定された結果が保存されています。
- check_date : 測定した時刻(ミリ秒)
- result : 疎通OK=1, NG=0
- message : メッセージ
これだけだと、使いづらいのでPingServiceMoniterも同梱してあります。そちらで測定結果の確認やアドレスの追加/削除ができます。

で、ここからが本題で、ping測定をブラウザで確認する事(本当はもっといろんなことをやっていて、その中にping測定結果を加える)が、作った目的でした。
なので、PingServiceが動いているPCでApache+PHPが稼働しているなら、以下のようなPHPプログラムでブラウザからpingsの測定結果を確認できます。
pingservice_monitor.zip

PHPでSQLiteを扱うので、pdo_sqliteを有効にしておくのを忘れずに。