/usr/home/handaru
$ su sakti
otp-md5 496 ko0807 ext
Password:
$ pwd
/usr/home/handaru
Password:
komkecil# exit
exit
$ su
Password:
komkecil# pwd
/usr/home/handaru
Tabel proses adalah sebuah struktur data atribut-atribut yang berkenaan dengan proses-proses yang sedang diberjalan. Atribut-atribut itu meliputi PID, tipe terminal, status, waktu dan perintahnya itu sendiri. Untuk menampilkan proses-proses yang sedang berjalan, dapat digunakan perintah ps. Karena UNIX [baca FreeBSD] adalah sistem operasi multi user yang konsisten dalam memberlakukan hak ases atas suatu resource sistem oleh seorang user, maka proses-proses yang bisa dijalankan oleh masing-masing user juga berbeda. Berikut untuk user standar :
$ ps
PID TT STAT TIME COMMAND
406 p0 Ss 0:00.02 -sh (sh)
408 p0 R+ 0:00.00 ps
Bandingkan dengan jika kita login dengan root :
# ps
PID TT STAT TIME COMMAND
539 v0 Ss+ 0:00.01 /usr/libexec/getty Pc ttyv0
540 v1 Ss+ 0:00.01 /usr/libexec/getty Pc ttyv1
541 v2 Ss+ 0:00.01 /usr/libexec/getty Pc ttyv2
542 v3 Ss+ 0:00.01 /usr/libexec/getty Pc ttyv3
543 v4 Ss+ 0:00.01 /usr/libexec/getty Pc ttyv4
544 v5 Ss+ 0:00.01 /usr/libexec/getty Pc ttyv5
545 v6 Ss+ 0:00.01 /usr/libexec/getty Pc ttyv6
546 v7 Ss+ 0:00.01 /usr/libexec/getty Pc ttyv7
534 con- S 0:00.00 sh /etc/rc autoboot
535 con- S 0:00.00 logger -p daemon.notice -t fsck
537 con- S 0:00.00 sh /etc/rc autoboot
549 p0 S 0:00.02 su
550 p0 S 0:00.04 _su (csh)
553 p0 R+ 0:00.00 ps
Baiklah kita mulai dengan menjelaskan atribut dan record di atas. PID boleh dianggap sebagai indeks dari proses-proses yang berjalan [baca pula keterangan perihal PID DI SINI]. TT adalah tipe terminal yang digunakan untuk mengeksekusi. v0 artinya virtual console mesin FreeBSD nomor yang pertama, v1 adalah virtual console kedua dan seterusnya. Suatu proses jika tak menemukan console terminal yang bisa digunakannya, dia menggunakan con-. p0 adalah pseudo terminal pertama. Pseudo terminal biasanya digunakan untuk menyiapkan terminal bagi X Windows system atau untuk switch user [su]. Untuk status akan kita bahas pada kesempatan lain ketika kita mulai membuat program aplikasi sendiri dimana untuk berjalannya dia membutuhkan alokasi proses.
Berikutnya, untuk menampilkan semua proses yang berjalan di sistem, termasuk proses yang tak memiliki controlling terminal, bisa digunakan opsi -x. Untuk menampilkan semua proses oleh semua user, dapat diberikan opsi -a. Dan untuk menampilkannya dalam format panjang, opsi -l bisa ditambahkan.
# ps -axl
UID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND
0 0 0 0 12 0 0 0 - WLs ?? 0:00.00 [swapper]
0 1 0 0 8 0 772 416 wait ILs ?? 0:00.02 /sbin/init
0 2 0 0 -8 0 0 8 - DL ?? 0:00.12 [g_event]
0 3 0 0 -8 0 0 8 - DL ?? 0:00.15 [g_up]
0 4 0 0 -8 0 0 8 - DL ?? 0:00.20 [g_down]
0 5 0 0 8 0 0 8 - DL ?? 0:00.00 [thread tas
0 6 0 0 8 0 0 8 - DL ?? 0:00.00 [acpi_task_
0 7 0 0 8 0 0 8 - DL ?? 0:00.00 [acpi_task_
0 8 0 0 8 0 0 8 - DL ?? 0:00.00 [acpi_task_
0 9 0 0 8 0 0 8 - DL ?? 0:00.00 [kqueue tas
0 10 0 0 -16 0 0 8 audit_ DL ?? 0:00.00 [audit_work
0 11 0 48 171 0 0 8 - RL ?? 37:29.75 [idle]
0 12 0 0 -32 0 0 8 - WL ?? 0:02.18 [swi4: cloc
0 13 0 0 -36 0 0 8 - WL ?? 0:00.00 [swi3: vm]
0 14 0 0 -44 0 0 8 - WL ?? 0:00.04 [swi1: net]
0 15 0 0 -16 0 0 8 - DL ?? 0:00.11 [yarrow]
0 16 0 0 -28 0 0 8 - WL ?? 0:00.00 [swi5: +]
0 17 0 0 -40 0 0 8 - WL ?? 0:00.00 [swi2: camb
0 18 0 0 -24 0 0 8 - WL ?? 0:00.00 [swi6: task
0 19 0 0 -24 0 0 8 - WL ?? 0:00.00 [swi6: Gian
0 20 0 0 -52 0 0 8 - WL ?? 0:00.00 [irq9: acpi
0 21 0 0 -80 0 0 8 - WL ?? 0:00.00 [irq16: cbb
0 22 0 0 -16 0 0 8 cbb cv DL ?? 0:00.00 [cbb0]
0 23 0 0 -16 0 0 8 cbb cv DL ?? 0:00.00 [cbb1]
0 24 0 0 -64 0 0 8 - WL ?? 0:00.00 [irq17: uhc
0 25 0 0 8 0 0 8 usbevt DL ?? 0:00.00 [usb0]
0 26 0 0 8 0 0 8 usbtsk DL ?? 0:00.00 [usbtask]
0 27 0 0 -64 0 0 8 - WL ?? 0:00.00 [irq18: uhc
0 28 0 0 8 0 0 8 usbevt DL ?? 0:00.00 [usb1]
0 29 0 0 -64 0 0 8 - WL ?? 0:00.00 [irq19: ehc
0 30 0 0 8 0 0 8 usbevt DL ?? 0:00.00 [usb2]
0 31 0 0 -68 0 0 8 - WL ?? 0:00.04 [irq20: fxp
0 32 0 0 -64 0 0 8 - WL ?? 0:00.05 [irq14: ata
0 33 0 0 -64 0 0 8 - WL ?? 0:00.00 [irq15: ata
0 34 0 0 8 0 0 8 usbevt DL ?? 0:00.00 [usb3]
0 35 0 0 -64 0 0 8 - WL ?? 0:00.00 [irq23: uhc
0 36 0 0 8 0 0 8 usbevt DL ?? 0:00.00 [usb4]
0 37 0 0 0 0 0 8 tzpoll DL ?? 0:00.19 [acpi_therm
0 38 0 0 0 0 0 8 coolin DL ?? 0:00.00 [acpi_cooli
0 39 0 0 -8 0 0 8 - DL ?? 0:00.01 [fdc0]
0 40 0 0 -48 0 0 8 - WL ?? 0:00.00 [swi0: sio]
0 41 0 0 -60 0 0 8 - WL ?? 0:00.00 [irq7: ppc0
0 42 0 0 -60 0 0 8 - WL ?? 0:00.00 [irq1: atkb
0 43 0 0 -16 0 0 8 psleep DL ?? 0:00.00 [pagedaemon
0 44 0 0 20 0 0 8 psleep DL ?? 0:00.00 [vmdaemon]
0 45 0 0 171 0 0 8 pgzero DL ?? 0:00.28 [pagezero]
0 46 0 0 -16 0 0 8 psleep DL ?? 0:00.02 [bufdaemon]
0 47 0 0 20 0 0 8 syncer DL ?? 0:00.10 [syncer]
0 48 0 0 -4 0 0 8 vlruwt DL ?? 0:00.01 [vnlru]
0 49 0 0 -16 0 0 8 sdflus DL ?? 0:00.02 [softdepflu
0 50 0 0 12 0 0 8 - DL ?? 0:00.18 [schedcpu]
0 141 1 172 20 0 1252 728 pause Is ?? 0:00.00 adjkerntz -
0 253 1 172 117 0 516 376 select Is ?? 0:00.00 /sbin/devd
0 282 1 0 96 0 1376 1028 select Ss ?? 0:00.03 /usr/sbin/s
0 355 1 0 96 0 1288 824 select Ss ?? 0:00.01 /usr/sbin/u
0 396 1 0 96 0 3524 2668 select Is ?? 0:00.01 /usr/sbin/s
0 402 396 5 4 0 6276 3272 sbwait Is ?? 0:00.09 sshd: handa
1001 405 402 1 96 0 6260 3256 select S ?? 0:00.09 sshd: handa
0 409 1 0 96 0 3504 3048 select Ss ?? 0:00.09 sendmail: a
25 413 1 0 20 0 3384 2808 pause Is ?? 0:00.01 sendmail: Q
0 429 1 0 8 0 1388 1100 nanslp Ss ?? 0:00.02 /usr/sbin/c
88 548 472 0 20 0 57300 26132 kserel S ?? 0:02.08 /usr/local/
0 539 1 77 5 0 1344 952 ttyin Is+ v0 0:00.01 /usr/libexe
0 540 1 77 5 0 1344 952 ttyin Is+ v1 0:00.01 /usr/libexe
0 541 1 77 5 0 1344 952 ttyin Is+ v2 0:00.01 /usr/libexe
0 542 1 77 5 0 1344 952 ttyin Is+ v3 0:00.01 /usr/libexe
0 543 1 77 5 0 1344 952 ttyin Is+ v4 0:00.01 /usr/libexe
0 544 1 77 5 0 1344 952 ttyin Is+ v5 0:00.01 /usr/libexe
0 545 1 77 5 0 1344 952 ttyin Is+ v6 0:00.01 /usr/libexe
0 546 1 77 5 0 1344 952 ttyin Is+ v7 0:00.01 /usr/libexe
88 472 1 77 8 0 1728 1376 wait I con- 0:00.02 /bin/sh /us
1001 406 405 0 8 0 1756 1372 wait Is p0 0:00.02 -sh (sh)
0 549 406 0 8 0 1776 1404 wait I p0 0:00.02 su
0 550 549 0 20 0 4668 2936 pause S p0 0:00.05 _su (csh)
0 648 550 0 96 0 1480 968 - R+ p0 0:00.00 ps -axl
Untuk opsi perintah ps yang lain, monggo di-man ps. Terakhir untuk kali ini, jika Anda ingin menghentikan suatu proses, maka Anda bisa melakukan dengan perintah kill diikuti dengan PID proses tersebut.
FreeBSD…feel free.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
Menurut definisi dari X/Open Spesification, sebuah proses adalah sebuah address space dan thread tunggal pengendali yang bekerja dalam address space tersebut dan setiap resource sistem yang dibutuhkannya.
Pada dasarnya sebuah proses adalah sebuah program yang berjalan. Program yang berjalan ini dibutuhkan untuk menangani segenap resource sistem terutama yang berkenaan dengan hardware atas perintah user [manusia atau user program lain yang terkait]. Inilah tiga unsur penting sistem komputer [user, program dan hardware]. Sistem koordinasi di ataslah yang menjadi fungsi terpenting dari suatu sistem operasi.
Untuk sistem operasi moern yang mengadopsi standar sistem multitasking, multithreading, multiuser dan networking base seperti UNIX [baca FreeBSD], pengaturan atau manajemen antar proses-proses yang terlibat sedemikian kompleks.
Baiklah kita mulai dengan struktur proses.
Pada contoh di atas terdapat dua user yang memerintahkan sistem untuk mencari dan menampilkan suatu kata dalam suatu file dengan perintah grep. Untuk keperluan ini sistem operasi membuat dua proses, masing-masing satu untuk user neil dan satu lagi untuk user rick. Untuk user neil, sistem mengalokasikan PID 101, sedangkan untuk user rick diberikan PID berbeda [102]. PID adalah process identifier yang merupakan bilangan unik yang biasanya berupa bilangan bulat antara 2-32000. Ketika sebuah proses dijalankan, dia akan ditempatkan dilokasi yang tak terpakai dengan memulainya dari 2. Jadi PID yang sudah tidak terpakai, bisa digunakan oleh proses berikutnya. Dengan ini efisiensi alokasi PID bisa dilakukan karena banyak proses yang hanya perlu eksis sebentar seperti perintah grep yang setelah menampilkan hasil pencariannya ke layar dia tidak lagi eksis. PID biasanya akan dipertahankan untuk proses-proses yang berjalan sebagai daemon alias backgroud process.
Pada contoh di atas terlihat bahwa untuk sebuah proses akibat eksekusi perintah grep oleh user neil bukan hanya file trek.text yang terlibat, grep code dan data yang dicari [kirk], namun juga C library. Perintah grep di atas sebenarnya terdiri dari membuka file trek.text dari disk, menampungnya di area memory sebagai read-only, lalu mencari string data [kirk] sebagai suatu variabel s dalam data space proses ini. Setelah ketemu akan ditampilkan ke layar. Untuk itu semua dia membutuhkan C library.
Referensi http://snap.nlc.dcccd.edu
FreeBSD…bisa dipahami.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
Interaktif shell_exec dengan AJAX-PHP
Terkadang suatu perintah di UNIX [baca FreeBSD] memiliki opsi gabungan dan bahkan beruntun. Misalnya perintah ps pada posting sebelum ini, menggunakan opsi -a lalu dilanjutkan dengan opsi -x. Untuk melihat hasil setiap opsi suatu perintah UNIX [baca FreeBSD] yang diberikan secara langsung [bahkan tatkala opsi diketikkan] dan lebih interaktif karena tidak harus bolak-balik antara form HTML dengan halaman server-side PHP, kita bisa menggunakan AJAX-PHP.
Baiklah, kita hanya perlu membuat file my_first_ajax_shell.html yang merupakan modifikasi file my_form_shell.html :
my_first_ajax_shell.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Contoh shell_exec diakses via AJAX-PHP</title>
</head>
<body>
<script language="javascript" type="text/javascript">
<!–
function getHTTPObject(){
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest) return new XMLHttpRequest();
else {
alert("Browser Anda tidak support AJAX.");
return null;
}
}
function setOutput(){
if(httpObject.readyState == 4){
document.getElementById(’outputText’).value = httpObject.responseText;
}
}
function ajaxKU(){
httpObject = getHTTPObject();
if (httpObject != null) {
httpObject.open("GET", "my_first_shell.php?x="
+document.getElementById(’inputText’).value, true);
httpObject.send(null);
httpObject.onreadystatechange = setOutput;
}
}
var httpObject = null;
//–>
</script>
<form name="shellForm">
Parameter perintah : <input type="text" onkeyup="ajaxKU();" name="inputText" id="inputText" /><br>
Hasilnya :<br><TEXTAREA NAME="outputText" COLS=120 ROWS=32 id="outputText"></TEXTAREA>
</form>
</body>
</html>
Di sini, file akan tetap mengakses file my_first_shell.php. Baiklah, berikut adalah beberapa screenshot-nya :
FreeBSD…nyaman, kan ?
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
Baiklah, sekarang kita akan membuat eksekusi shell_exec di PHP lebih interaktif. Misalnya kita gunakan form HTML berikut untuk memasukkan parameter command shell-nya :
my_form_shell.html
<form action="my_first_shell.php" method="POST">
Parameter perintah :
<input type="text" name="x">
<input type="submit" value="send">
</form>

Untuk dikirimkan ke file my_first_shell.php yang sedikit kita modifikasi :
my_first_shell.php
<?php
$output = shell_exec("ps $x");
echo "<pre>$output</pre>";
?>
Hasilnya akan sama dengan yang di sini.
Catatan :
FreeBSD…mengatasi masalah tanpa masalah.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
Berikut akan dibahas pengendalian command-line dengan menyertakan argumen atau biasa pula disebut dengan switch. Contoh command-line adalah perintah ls yaitu perintah kepada sistem operasi (Unix) untuk menampilkan daftar isi dari suatu direktori aktif. Jika kita tambahkan opsi -l (ls -l) maka ini berarti kita melakukan perintah ls dengan long-listing dimana isi dari direktori yang aktif akan ditampilkan beserta atribut-atribut yang melekat padanya. Penggunaan opsi -l ini yang dalam pembahasan kita ini, kita sebut sebagai argumen command-line atau switch. Dengan switch kita bisa memodifikasi perilaku dari suatu program, pada contoh di atas : -l merubah perilaku (format penampilan daftar) dari perintah/program ls.
Secara konsep, switch berperilaku seperi argumen dari suatu fungsi dalam C. Switch dilewatkan antar program sistem operasi, persis sama dengan pelewatan argumen antar fungsi. Switch dilewatkan sebagai argumen dari fungsi main(). Penulisan argumen adalah sebagai berikut :
main(int argc, char** argv)
Ada dua argumen yang dilewatkan, yang pertama argv adalah sebuah array string karakter. Dan yang kedua adalah sebuah integer, argc, yang menentukan jumlah string dalam array argv. Sintaks deklarasi char** argv menandakan bahwa argv merupakan pointer to pointer to character atau pointer sebuah array karakter atau disebut pula sebagai sebuah array string karakter. Karena berupa array, sehingga kita boleh pula menuliskan deklarasinya seperti berikut :
main(int argc, char** argv[])
Ketika kita menjalankan suatu program, maka array argv memuat semua informasi perihal command-line dan argumen/switch yang disertakan. Pemisah antara command-line dan argumen-argumen yang menyertainya adalah karakter spasi atau spasi kosong (whitespace). Integer argc diberi nilai sebanyak string yang akan dimuatkan. Misalnya kita ingin menjalankan perintah ls -ls, maka kita membutuhkan argc sama dengan 2, dengan perincian sebagai berikut :
argc = 2
argv[0] = “ls”
argv[1] = “-la”
Ok, kita akan menerapkan pengetahuan kita di atas untuk memodifikasi program cpstandar yang telah kita buat pada waktu terdahulu menjadi bisa menggunakan argumen. Argumen yang akan kita gunakan adalah nama file yang akan disalin dan file hasil penyalinnya. Sehingga program penyalin file kita ini menjadi lebih interaktif. Inilah file modifikasi dari cpstandar.c :
File standar2.c
#include <stdio.h>
main(int argc, char** argv)
{
int c;
FILE *in, *out;
in = fopen(argv[1], “r”);
out = fopen(argv[2], “w”);
while ((c = fgetc(in)) != EOF)
fputc(c, out);
}
Runtut proses eksekusinya :
$ ls -l test*
-rw-r–r– 1 handaru handaru 24 Sep 6 08:37 test
$ ./cpstandar2 test test2
$ ls -l test*
-rw-r–r– 1 handaru handaru 24 Sep 6 08:37 test
-rw-r–r– 1 handaru handaru 24 Sep 6 08:38 test2
$
pada contoh ini berlaku :
argc = 3
argv[0] = ./cpstandar2
argv[1] = test
argv[2] = test2
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
Berikut adalah inisialisasi dari langkah panjang kita ke depan untuk mengkolaborasikan bahasa pemrograman C, C++, Perl sebagai engine aplikasi [terutama untuk Administrasi Server FreeBSD] dengan PHP sebagai interface ke usernya. Kali kita hanya membuat script PHP sederhana untuk memerintahkan sistem menampilkan semua proses yang sedang berjalan dengan perintah ps ax :
File my_fisrt_shell.php
<?php
$output = shell_exec(’ps -ax’);
echo "<pre>$output</pre>";
?>
Hasilnya :
FreeBSD…apalagi yang kurang ?
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
Setting Speedy dengan Modem KASDA
Langsung aja :
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
File System Access Control Lists [ACLs] adalah sebuah fitur yang memungkinkan FreeBSD 5.0 ke atas meningkatkan model permisi/hak akses atas file/direktori standar UNIX ke level standar POSIX. OK, terlalu teknis. Gampangnya begini, pernahkah Anda mengalami keribetan sewaktu harus memberikan hak akses tertentu atas suatu file yang Anda buat kepada user lain tapi hanya pada user tersebut saja. Anda bisa saja mengubah kepemilikan file tersebut dari Anda ke dia dengan perintah chown, namun itu berarti kepemilikan Anda terhadap file itu lenyap. Anda bisa pula memasukkan user lain tersebut ke dalam group Anda, namun hal ini juga berarti membuat semua user anggota group Anda juga memiliki hak akses terhadap file itu seperti satu user tadi. Atau paling gampang Anda memberikan hak akses atas file itu ke other, nah kalau yang ini lebih parah karena berarti semua orang memilki hak akses yang sama atas file tersebut. Masalah seperti ini menjadi begitu mudah teratasi jika Anda memberlakukan ACL atas suatu partisi sehingga semua file/direktori di dalamnya bisa kita kelola sistem hak akses terhadapnya dengan lebih simple dan mudah.
Fitur ACLs secara default telah di support oleh kernel GENERIC FreeBSD [options UFS_ACL]. Jadi Anda tidak perlu melakukan recompile kernel. Karena fitur ACLs harus diberlakukan pada suatu sistem file [baca partisi] yang tidak bisa dirubah flag-nya hanya dengan remount [mount -u] namun harusn dengan umount lalu mount, saya mencobakannya pada sebuah flash disk.
Baiklah, inilah ekprerimen kita :
FreeBSD…my cute daemon.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
Posting ke 100 : Antara Apache 2, MySQL 5.0, PHP 5 dan FreeBSD 6.2
Karena hendak membuat tutorial PHP dan MySQL [tapi masih demi kepentingan membuat Sistem Administrasi Server], saya mengawalinya dengan instalasi tiga jagoan web base applications : Apache, MySQL dan PHP di mesin FreeBSD. Telah banyak tutorial tentang hal ini, jadi saya akan menyingkatnya saja :
Instalasi MySQL 5.0 :
Instalasi Apache 2 :
edit file /etc/hosts :
::1 localhost.localdomain localhost
127.0.0.1 localhost.localdomain localhost
192.168.1.252 localhost.localdomain localhost
dimana 192.168.1.252 adalah IP Server FreeBSD
Instalasi PHP 5 :
# edit /usr/local/etc/apache2/httpd.conf lalu tambahkan baris-baris berikut :
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
LoadModule php5_module libexec/apache/libphp5.so
kemudian ubah baris DirectoryIndex index.html menjadi DirectoryIndex index.php index.html
Terakhir reboot. Untuk mencobanya buat file test.php dengan isi <?php phpinfo() ?> di direktori /usr/local/www/data/. Jika tak ada aral melintang, maka ketika Anda membuka URL http://ip_server_FreeBSD/test.php akan muncul segala informasi perihal PHP, yang meliputi opsi kompilasi PHP, ekstensi kompilasi PHP, versi PHP, indormasi server dan environment [jika di-compile sebagai modul], environment PHP, informasi versi OS, path, nilai global dan nilai lokal dari opsi-opsi konfigurasi, header-header HTTP, dan lisensi PHP. Berikut ascreenshoot-nya :
Tutorial PHP dan MySQL juga bertebaran di mana-mana, jadi tak perlu saya lakukan di blog ini. Ke depan kita hanya berkonsentrasi pada hal-hal yang berkenaan dengan sistem operasi UNIX [baca : FreeBSD] yang tidak lebih dari perihal dua hal : file dan proses. Yakin hanya tentang dua hal ini ? Yup, tapi turunannya itu lho yang gak ketulungan banyaknya. Tentu nantinya kita perlu juga melakukan kolaborasi dengan C, C++ dan tentu saja Perl Programming yang merupakan core-nya. PHP kita gunakan sebagai interface dengan pengguna aplikasi yang akan kita bangun, yaitu si Admin Server. Saya lebih suka menggunakan interface web base daripada X base. Jadi untuk Tk, no teng yu ! Kalau MySQL kita gunakan jika butuh tampungan terutama untuk log dan config. Pada tahap awal kita akan kolaborasikan C [baca : gcc] dengan PHP, karena kita telah melakukan cukup preparasi teknik pemrograman dengan C di sini.
FreeBSD…just integrated in simplify.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa