Archive for the 'php' Category
[ IDE ] Paralax : Parallel Computing Over Ajax

Sebenernya ide ini dah lama, mungkin 2 ato 3 tahun lalu dah kepikiran. Sempet jadi kandidat tesis saya tapi abis itu dilupain gara-gara asik maen workflow :D. Trus daripada sia-sia, saya publish disini, siapa tau ada yang mo implement ato mo ngembangin lebih lanjut.
Ide awal gini, kan sekarang jumlah komputer yang terhubung ke internet dah banyak banget, buktinya IPV4 sampe habis. Nah kebanyakan, komputer yang terhubung ke internet itu keseringan idle, terutama komputer client yang cuma dipake untuk browsing, chatting ato nyari gambar dan video ****** (edited -red). Nah komputer-komputer client yang idle itu, walaupun disebt client, tapi rata-rata punya prosessor yang keren-keren, apalagi sekarang jamannya core duo ato lebih. Kan sayang banget daya komputasi yang tersedia berlimpah itu terbuang percuma.
Nah ide dari Paralax ini adalah gimana caranya orang-orang yang punya resource terbuang sia-sia tadi bisa nyumbangin resource komputasinya untuk kegiatan yang lebih berguna. Jadi diminta untuk ngejalanin program yang berguna, tapi gak terlalu menganggu kegiatan dia. Pasti dah pada mikir “Bukannya udah ada parallel computing dari dulu ?“. He..he..he.. emang sih udah ada, bahkan kayaknya udah mature banget. Tapi saya mo nekanin karakteristik dari pengguna-pengguna tadi yaitu :
1. Koneknya gak dedicated
Maksudnya kadang konek, kadang enggak. Ya tergantung maunya di user aja. Jadi sistem paralax ini harus bersikap pesimis, maksudnya gak berharap banget komputer client bakal konek terus. Trus juga harus clientnya yang minta duluan (ini programnya aja, bukan usernya ngelakuin manual), soalnya server kan gak tau kapan client mo online ato enggak.
2. Susah disuruh nginstall program
Maunya gak usah download-download langsung jalan aja. Jadi model paralel komputing lama yang mengharuskan user untuk download program host program paralel susah diimplementasiin sekarang.
3. Susah disuruh update program
Disuruh install aja susah, apalagi disuruh update program kalo misalnya ada perubahan perhitungan/algoritma. Makanya model paralel computing baru perlu diciptain.
Jadi intinya nanti user yang mo nyumbang resource komputasinya tinggal ngebuka web browser dan menuju ke alamat tertentu. Bisa juga scriptnya diembed ke page lain dengan menggunakan iframe. Dengan berjalan di web browser, kan user gak perlu install apapun, kan hampir semua OS ada browsernya. Lagian dengan teknik Ajax, bisa dibuat kalo misal ada update algoritma di modul worker, bisa update otomatis tanpa campur tangan user.
Tapi yang jadi masalah mungkin javascript kan lambat, ya emang sih, tapi namanya juga nyumbang
(walau yang ini keren banget, nyumbang resource komputasi). Trus javascript kan ada timeout eksekusi script ? Tenang…. ini bisa diakalin dengan memotong script kalo udah beberapa waktu untuk interval sesaat dan dipanggil lagi pake settimeout. Tapi yang saya suka dari web browser kan kerjanya kayak sandbox, jadi dari segi keamanan gak masalah, gak kayak program paralel komputing lain yang harus diinstal, masalah keamanan pasti jadi perhatian banget.
Mungkin yang perlu dipikirin gimana cara mrogram yang enak, misal pake bahasa yang biasa aja, trus ada kompiler yang bisa ngebuat kode yang siap dijalanin di server (php/jsp/ato yang lain) dan di client (java script)
Aplikasi yang kepikiran sama saya :
1. Simulasi reaksi kimia dan obat
2. Simulasi cuaca
3. Ngecrack kode keamanan
4. Pemetaan genetik
5. Ngegambar film 3D
Ato apa lagi deh yang perlu komputasi amat banyak tapi kalo dari segi waktu emang gak harus cepet-cepet banget. Sebenernya semua sisi udah kepikiran sama saya, tapi emang dari segi waktu saya gak punya. Tapi kalo ada yang mo ngembangin dipersilakkan
:D
Windows Service Dengan PHP
Kemaren saya nyari-nyari gimana bisa ngemulasiin Cronnya linux untuk diwindows. Solusi paling tepatnya tentu pake service-nya windows, soalnya kalo pake service bisa start program walaupun usernya belum login, trus kalo usernya logout programnya tetep jalan.
Hasil nyari-nyari diinternet akhirnya diputusin buat sendiri aja
(abis enggak ada yang muasin sih) Apalagi nemu tehnik untuk membuat windows service dengan menggunakan PHP dari blognya Wez Furlong. Tehnik ini sebenernya udah cukup lama ada tapi referensi tentang penggunaannya masih sedikit banget, apalagi dalam bahasa indonesia. Karena menurut saya tehnik pembuatan windows service menggunakan PHP cukup penting, makanya saya ngebahas disini.
Program windows service dengan PHP ngegunain model CLInya PHP (maksudnya PHP dirun langsung dari command prompt, bukan dari web server kaya Apache). Dalam implementasi, saya ngegunain PHP yang dipaket oleh WAMP 5 (sudah pake Apache 2 + PHP 5). Pertama, buka php.ini yang ada di :
c:\wamp\Apache2\bin dan trus tambahin baris ini di bagian extention :
extension=php_win32service.dlltrus pastiin ada file :
c:\wamp\php\ext\php_win32service.dllkemudian buat file cron.php di folder c:\wamp\www (posisi terserah sih, beda command jalaninnya aja nanti). isinya :
< ?php
if ($argv[1] == 'install')
{
win32_create_service(array(
'service' => ‘purefectCron’,
‘display’ => ‘purefectCron’,
‘path’ => ‘c:wampphpphp-win.exe’,
‘params’ => ‘-c c:wampApache2bin c:wampwwwcron.php run’));
}
else if ($argv[1] == ‘uninstall’)
{
win32_delete_service(’purefectCron’);
}
else if ($argv[1] == ‘run’)
{
chdir(’c:wampwww’);
win32_start_service_ctrl_dispatcher(’purefectCron’);
while (win32_get_last_control_message()!= WIN32_SERVICE_CONTROL_STOP)
{
echo(’[' . date('c') . '] checking…’);
// taro kode service disini
sleep(30);
}
}
?>
Kalo mau download, klik disini : cronphp.txt
Penjelasannya :
if ($argv[1] == ‘install’)
{baris ini digunakan untuk mengecek parameter yang dipassing dari command line, bagian ini untuk proses install service.
win32_create_service(array(
'service' => 'purefectCron',
'display' => 'purefectCron',
'path' => 'c:wampphpphp-win.exe',
'params' => '-c c:wampApache2bin c:wampwwwcron.php run',
));baris ini untuk mendaftarkan service dengan nama “purefectCron”. Service dan display boleh diganti, tapi saya saranin diisi dengan nilai yang sama.
path menunjuk ke exe dari PHP, saya gunain php-win.exe yang ada di c:\wamp\php
params adalah parameter yang akan dipassing ke php.exe saat menjalankan service.
-c c:\\wamp\\Apache2\\bin maksudnya adalah menggunakan konfigurasi php.ini yang ada di folder c:\wamp\Apache2\bin
c:\\wamp\\www\\cron.php run maksudnya php.exe menjalankan script cron.php yang ada di c:\wamp\www, dengan parameter “run”
else if ($argv[1] == ‘uninstall’)
{baris ini untuk filter operasi uninstall service
win32_delete_service('purefectCron');untuk menghapus service dari daftar service, parameternya adalah nama service yang sesuai dengan nama service/display waktu proses install.
else if ($argv[1] == ‘run’)
{filter untuk proses ngejalanin service, bagian ini nanti yang dijalanin sama windows
chdir('c:\\wamp\\www');Ganti working directory ke c:\wamp\www, maksudnya supaya kode selanjutnya berjalan di folder tersebut, jadi mirip sama kode web page punya kita.
win32_start_service_ctrl_dispatcher('purefectCron');Baris ini untuk men-start servicenya, parameternya samain dengan nama service/display waktu proses install.
while (win32_get_last_control_message() != WIN32_SERVICE_CONTROL_STOP)
{Kita looping selama belom di stop
writeln('[' . date('c') . '] checking…’);
// taro kode service disini
sleep(30);Taro kode service anda disini, sebenernya gak masuk sense sih echoin string, tapi ini cuma contoh doang. Ubah kode diatas sesuai dengan kebutuhan service kamu.
trus untuk install servicenya, buat file :
c:\wamp\install.batyang isinya :
cd www
"../php/php.exe" -c ../Apache2/bin cron.php install
reg add HKLM\SYSTEM\CurrentControlSet\Services\purefectCron /V Description /t REG_SZ /d "Purefect Cron Daemon" /f
NET START purefectCronkalo mau download, klik disini installbat.txt
Penjelasan :
cd www
"../php/php.exe" -c ../Apache2/bin cron.php installBaris ini untuk jalanin cron.php untuk nginstall servicenya
reg add HKLM\SYSTEM\CurrentControlSet\Services\purefectCron /V Description /t REG_SZ /d "Purefect Cron Daemon" /fSebenernya baris ini optional, gunanya untuk mengeset description dari service (soalnya saya gak tau gimana ngesetnya dari php
jadi manual aja)
NET START purefectCronBaris ini untuk start jalanin servicenya
untuk uninstallnya, buat file :
c:\wamp\uninstall.batyang isinya :
NET STOP purefectCron
cd www
"../php/php.exe" -c ../Apache2/bin cron.php uninstallkalo mau download, klik disini : uninstallbat.txt
Penjelasan :
NET STOP purefectCronKita berhentiin dulu sebelum uninstall
cd www
"../php/php.exe" -c ../Apache2/bin cron.php uninstallpanggil script cron.php, bagian uninstall.
Segitu aja penjelasan dari saya, kalo ada yang kurang jelas ato mau diskusi, bisa taro comment disini, ato kirim email ke denny(at)klorofil.org
8 comments