Jumat, 11 Mei 2012

Membuat Script PHP Cek Status Service Gammu

Ketika Anda membuat aplikasi SMS Gateway dengan Gammu, seringkali kita agak direpotkan ketika akan melihat status servicenya apakah sudah benar-benar jalan atau belum. Mengapa agak repot? ya… karena status service Gammu ini bisa dilihat melalui Control Panel > Administrative Tools > Services. Setelah itu kita harus cari juga di dalam list service yang terinstal di Windows, dan barulah kelihatan status Gammu nya sudah betul-betul berjalan atau belum.
Nah… pada artikel kali ini, saya akan mencoba memaparkan cara mengetahui keadaan service Gammu apakah sudah running atau belum melalui script PHP yang kita buat sendiri. Sehingga untuk mengetahui kondisi servicenya kita tidak perlu repot seperti di atas, bahkan script cek status service ini bisa dicombine dengan aplikasi SMS gateway yang kita buat sendiri. Dengan demikian user dari aplikasi bisa dengan mudah melihat status servicenya.
Teknik ini sudah diterapkan di aplikasi phpSMS yang saya buat, dan terbukti sukses idenya :-)

OK deh… sekarang bagaimana ide pembuatan scriptnya? bagaimana supaya script PHP ini bisa membaca status service Gammu nya?
Oya… teknik ini hanya untuk di sistem operasi Windows XP saja ya. Untuk sistem operasi yang lain menyesuaikan ya.. :-)
Ide nya adalah, pertama kita buat dahulu sebuah file teks yang nanti isinya adalah list service-service yang sedang running di Windows. Untuk mengenerate file teks tersebut kita gunakan command

1.net start > service.log
Command tersebut dapat Anda jalankan di command prompt. Hasil dari command di atas adalah munculnya sebuah file bernama service.log di dalam direktori dimana Anda menjalankan command tersebut. Jika Anda buka filenya, maka akan muncul list service yang sedang running seperti pada contoh tampilan di bawah ini
Service Gammu
Nah… jika di dalam file tersebut terdapat tulisan “Gammu SMSD Service (GammuSMSD)“, maka berarti service Gammu sedang running. Jika tidak ada, maka servicenya mati.
Selanjutnya, kita buat script PHP untuk membaca isi file service.log. Kemudian dengan serangkaian prosedur kita baca baris demi baris list service yang ada dalam file tersebut. Jika ditemukan string “Gammu SMSD Service (GammuSMSD)” berarti service Gammu sedang running.
Oya, bagaimana caranya membaca isi file teks dengan PHP? caranya dengan menggunakan function fopen() kemudian baca baris demi baris isi filenya dengan function fgets().
Adapun script PHP lengkapnya adalah sbb:
service.php
01.
02.// menjalankan command untuk mengenerate file service.log
03.passthru("net start > service.log");
04. 
05.// membuka file service.log
06.$handle = fopen("service.log", "r");
07. 
08.// status awal = 0 (dianggap servicenya tidak jalan)
09.$status = 0;
10. 
11.// proses pembacaan isi file
12.while (!feof($handle))
13.{
14.// baca baris demi baris isi file
15.$baristeks = fgets($handle);
16.if (substr_count($baristeks, 'Gammu SMSD Service (GammuSMSD)') > 0)
17.{
18.// jika ditemukan baris yang berisi substring 'Gammu SMSD Service (GammuSMSD)'
19.// statusnya berubah menjadi 1
20.$status = 1;
21.}
22.}
23.// menutup file
24.fclose($handle);
25. 
26.// jika status terakhir = 1, maka gammu service running
27.if ($status == 1) echo "Gammu service running..";
28.// jika status terakhir = 0, maka service gammu berhenti
29.else if ($status == 0) echo "Gammu service stopped";
30. 
31.?>
Perhatikan script di atas, bahwa sebelum proses pengecekan setiap baris pada list dalam file service.log, kita beri nilai awal $status sama dengan 0. Ini maksudnya kita asumsikan belum ditemukan string bernama ‘Gammu SMSD Service (GammuSMSD)’. Selanjutnya kita cek baris demi baris isi filenya. Selama belum ditemukan, nilai statusnya masih sama dengan 0 dan jika ditemukan string ‘Gammu SMSD Service (GammuSMSD)’ maka statusnya berubah menjadi 1.
Bagaimana kawan, mudah bukan membuatnya? Kini Anda tidak perlu repot lagi mengetahui status service Gammu. Oya, tidak semua versi Gammu bisa diberikan script di atas karena tidak semua Gammu menyediakan service. Biasanya Gammu yang tidak menyediakan service adalah yang versi rendah.

Artikel Terkait


EmoticonEmoticon