Saturday, November 26, 2011

OpenVPN connected tapi gagal connect ke VPN

Beberapa waktu lalu, gw menginstall openvpn untuk keperluan koneksi ke jaringan VPN kantor. Setelah bersusah payah men-setting openvpn (dengan menyediakan file config.ovpn, sertifikat ridwan.key, ridwan.crt) akhirnya gw berhasil tersambung ke jaringan VPN kantor.

Sayang beribu sayang, walaupun dinyatakan telah tersambung ke jaringan VPN kantor, gw ga bisa mengakses database server maupun aplication server. Gw coba ping X.X.X.X dan hasilnya adalah selalu request timed out. Akhirnya gw iseng membuka log openvpn. Dan di sana dikatakan "ROUTE: route addition failed using CreateIpForwardEntry: One or more arguments are not correct.   [if_index=21]".

Akhirnya mencari ke internet, dan berdasarkan penerawangan mbah Google, didapatlah 2 halaman yang memberikan solusi serupa (halaman ini dan ini). So ternyata yang perlu dilakukan hanyalah menambahkan 2 line berikut ini di file configuration file (ovpn file)
route-method
exeroute-delay 2

Friday, November 18, 2011

Segmentation Fault di PHP

Tadi siang tiba-tiba file bot PHP gw mati. Setelah gw cek, ternyata ada 1 line code yang selalu menyebabkan file tersebut mati, yaitu str_get_html . Matinya pun aneh, berenti tiba-tiba tanpa permisi ataupun teriak-teriak di log. Akhirnya kucoba memasang try-and-catch-exception, eh anehnya tetap lolos.

Pusing begitu, akhirnya bertanyalah ke mbah google, stackoverflow, dll. Disarankan untuk verbosing, aku memasang kode berikut ini:

error_reporting(E_ALL);  
ini_set('display_errors', 1);

Dan voila, muncullah si brengsek satu itu "segmentation fault". Wuahhh, langsung deh teringat dengan nostalgia masa kuliah, ketika memprogram dengan bahasa C ^^. Ternyata, segmentation fault itu terjadi akibat PHP kehabisan jatah memori untuk memproses string kode HTML menjadi linked-DOM-object.

Akhirnya diputuskan, kalau ternyata panjang stringnya udah keterlaluan, maka ga usah diparse menjadi linked-DOM-object.

So, kode programnya menjadi seperti ini:


$html_code_str = get_html_code($link);
$html = null;
if (strlen($html_code_str) < 500000) {
    $html = str_get_html($html_code_str);
} else {
    print "exceed max string length => unprocessed";
}