Belajar PHP: Membuat Aplikasi Daemons Sederhana

Bagi anda yang membutuhkan solusi aplikasi yang melakukan checking terus menerus atau melakukan aksi tertentu secara periodik, mungkin anda akan menggunakan solusi penggunaan Cronjob (jika di server Linux) dan Task Schedulers (jika di server Windows). Namun dua jalan tersebut sangat tergantung pada pewaktuan server dan butuh level akses yang tinggi serta tidak semua hosting mendukungnya. Nah, sebenarnya ada satu jalan lagi yang bisa ditempuh untuk memecahkan masalah diatas, yaitu menggunakan Daemon. Daemon adalah program yang berjalan dibelakang layar (running in backgrounds). Kebanyakan daemon diberinama dengan akhiran ‘d’, contoh: sshd, mysqld, syslogd dan lain-lain.

Membuat Daemon PHP

Daemon sederhana dengan PHP bisa kita buat dengan metoda perulangan WHILE. Contohnya:

<?php

$no = 1;
while( true )
{
   echo $no."\n";
   sleep( 3 );
   $no++;
}
?>

Skrip diatas akan berjalan selama nilai true ada, dan akan menulis variabel nomor kemudian berhenti sejenak 3 detik untuk melanjutkan ke loop berikutnya.

Berikut adalah contoh nyata implementasi daemon pada plugin WP-SMSGateway yang saya kembangkan. Daemon ini akan bekerja mengecek secara periodik tabel inbox dari keyword-keyword yang dimasukkan.

<?php

define( 'ABSPATH', dirname(dirname(dirname(dirname(dirname(__FILE__))))).'/' );
include ABSPATH.'wp-load.php';

$wpsmsgateway = new WPSMSGateway();

/**
 * Method for displaying the help and default variables.
 **/
function displayUsage(){
    global $log;
 
    echo "\n";
    echo "\n";
    echo "WP-SMSGateway Plugin Daemons (c) 2012 by Luthfi Emka.\n";
    echo "\n";
    echo "Daemons for Checking SMS Keywords, parse and saved the results.\n";
    echo "This is a part of WP-SMSGateway plugins by Luthfi Emka.\n";
    echo "\n";
    echo "Usage:\n";
    echo "\tdaemons.php [options]\n";
    echo "\n";
    echo "\toptions:\n";
    echo "\t\t--help display this help message\n";
    echo "\t\t--keyword=<keyword> keyword to find\n";
    echo "\n";
}//end displayUsage()


 
//configure command line arguments
if($argc > 0){
    foreach($argv as $arg){
        $args = explode('=',$arg);
        switch($args[0]){
            case '--help':
                return displayUsage();
            case '--keyword':
                $keyword = $args[1];
                break;
            
            case '--saved-only':
                $saved = TRUE;
                break;
        }//end switch
    }//end foreach
}//end if

$no = 1;
while(TRUE){
    //$brot = file_get_contents( $log );
    //echo ' '. base64_encode( $brot ) .' ';
    
    if(!empty($keyword)){
        $results = $wpsmsgateway->ceksms_from_keyword( '&keyword=SALAM&limit=20' );
        foreach($results as $res){
            echo $res->TextDecoded."\n";
        }
    }
    echo $no.' ';
    sleep(3);
    $no++;
}
?>

Daemon diatas dilengkapi dengan options, –help untuk menampilkan bantuan dan –keyword. Untuk menjalankannya di Windows
C:\xampp\php\php.exe C:\xampp\htdocs\daemons.php --keyword=TEST

atau di Linux

php /opt/smsgateway/daemons/daemon.php

Wagiman Wiryosukiro

Petani Sistem Informasi, tukang las plugin & themes Wordpress. Co-Founder SistemInformasi.biz. Saat ini aktif sebagai Developer & kontributor di OpenMandriva Linux.

You may also like...

3 Responses

  1. Randy Tri Handhoko says:

    artikel+tutornya keren” mas apalagi yg satu ini,,,mas bisa ajarin saya gak cara buat aplikasi daemon yg mirip” kyk gammu gitu tapi pake php,,,kira” bisa gak yaa,,,soalnya saya mau belajar buat aplikasi smsgateway sendiri pake php,,,saya masih penasaran sama smsgateway niihh,,,soalnya kmaren pas saya Prakerind saya dikasih project buat kontrol aktivitas lampu berbasis smsgateway gtu,,,naahh tapinya saya masih gunain bantuan gammu,,sedangkan pembimbing utama saya maunya harus buat smsgatewaynya sndiri pake php,,,,bisa gak masss :'( pleaaaseeee….

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: