5 hal menarik yang bisa kita lakukan dengan Windows dan PHP
Jan 31st, 2008 by amin888
Di-sadur dari sini.
Kebanyakan contoh-contoh PHP dibuat untuk sistem operasi linux/unix.
Berikut adalah contoh-contoh menarik kegunaannya tapi hanya untuk php yang jalan di windows (IIS atau Apache).
1) Eject CD-ROM
// buat instance Windows Media Player
$mp = new COM("WMPlayer.OCX");
// eject cd-rom pertama dari daftar optical-drives
$mp->cdromcollection->item(0)->eject();
2) Baca dan tulis dari/ke windows punya registry
function registry_read($folder, $key)
{
$WshShell = new COM("WScript.Shell");
$registry = “HKEY_LOCAL_MACHINE\SOFTWARE\\” . $folder . “\\” . $key;
$result = $WshShell->RegRead($registry);
return($result);
}
$key = registry_read(”RegisteredApplications”,”Firefox”);
parameter:
- Folder name - (key path past HKEY_LOCAL_MACHINE\SOFTWARE\\)
- key - the key name to read from
function registry_write($folder, $key, $value,$type="REG_SZ")
{
$WshShell = new COM("WScript.Shell");
$registry = “HKEY_LOCAL_MACHINE\SOFTWARE\\” . $folder . “\\” . $key;
$result = $WshShell->RegRead($registry);
$result = $WshShell->RegWrite($registry,$value, $type);
return($result);
}
parameters:
- Folder name - (key path past HKEY_LOCAL_MACHINE\SOFTWARE\\)
- key - the key name to write to
- value - value that will be written to the key
- type - key type (default: REG_SZ)
3) register and un-register phpscripts sebagai windows service
# register sebuah service
win32_create_service(array(
’service’ => ‘myservice’, # nama dari service-mu
‘display’ => ’sample dummy PHP service’, # deskripsi
‘params’ => ‘c:\path\to\script.php run’, # path dari script and parameters
));
# un-register sebuah service
win32_delete_service(’myservice’);
# code yang jalan sebagai sebuah service
if ($argv[1] == 'run') {
win32_start_service_ctrl_dispatcher('myservice');
while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
# tulis code/script-mu di sini
# biasanya, jalankan code/scriptmu di bawah 30 detik untuk tiap looping
}
}
Ini menggunakan windows API Service DLL, yang biasanya tidak diaktifkan secara default. Ini cara meng-install-nya :
- Donlot libary utama (yang ada di ekstension utama PECL di php.net) sini
- extract php_win32service.dll ke folder ext-mu (lokasi .dlls php ekstension-mu)
- tambahkan baris berikut ke php.ini-mu: extension=php_win32service.dll
4) print pages/data
# fungsi di bawah hanyalah fungsi kecil untuk menformat nama host+printer, untuk meng-print ke printer yang dishared lewat jaringan
function getPrinter($host,$SharedPrinterName) {
return “\\\\”.$host.”\\”.$SharedPrinterName;
}
# ini untuk mengaktifkan printer
$handle = printer_open(getPrinter(”my computer 2?,”my printer”));
Daftar lengkap fungsi-fungsi untuk printing ada di sini
# kalo untuk linux, ini contohnya
function lpr($string,$printer) {
$prn=(isset($printer) && strlen($printer))?”$printer”:C_DEFAULTPRN ;
$CMDLINE=”lpr -P $printer “;
$pipe=popen(”$CMDLINE” , ‘w’ );
if (!$pipe) {print “pipe failed.”; return “”; }
fputs($pipe,$string);
pclose($pipe);
}
Ini menggunakan windows punya API Service DLL, yang tidak diaktifkan secara default. Ini cara meng-install-nya :
- Donlot library utama (yang tergabung dalam extension utama PECL dari php.net) sini
- extract php_printer.dll ke folder ext-mu (lokasi di aman ada .dlls php extension-mu)
- tambahkan baris berikut ke php.ini-mu : extension=php_printer.dll
5) Muncul-in current system processes
# muncul-in current processes yang lagi jalan
print_r(win32_ps_list_procs());
command-command yang berkaitan:
# mengambil statistics global memory utilization
print_r(win32_ps_stat_mem());
# mengambil statistics process dengan process id pid (jika tidak ada parameter process id, current process yang akan dipakai)
print_r(win32_ps_stat_proc(int processid));
Ini menggunakan windows punya API Service DLL, yang tidak diaktifkan secara default. Ini cara meng-install-nya :
- Donlot library utama (yang tergabung dalam extension utama PECL dari php.net) sini
- extract php_win32ps.dll ke folder ext-mu (lokasi di aman ada .dlls php extension-mu)
- tambahkan baris berikut ke php.ini-mu : extension=php_win32ps.dll