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
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.
EmoticonEmoticon