Thursday, June 14, 2007

Codingan yang aneh..

Beberapa hari ini aku dapet kerjaan buat mendevelop suatu sistem menggunakan PHP. Kerjaannya sih sederhana. Aku cuma perlu membaca data dari database tertentu, lalu memindahkannya ke tabel pada database lain, lalu membuat file XML yang isinya merepresentasikan data-data yang sebelumnya aku baca. Data yang harus dibaca mencapai ribuan. Jumlah data seharusnya nggak menjadi masalah disini, karena aku rasa PHP cukup reliable dalam menangani file berukuran besar.

Anehnya, jumlah data yang banyak itu menjadi masalah dalam script yang aku buat. Jika datanya sedikit, file XML yang dihasilkan dapat terbaca dan ter-parsing dengan baik (well formed). Namun, karena data yang aku baca lumayan besar, file XML yang dihasilkan berukuran sekitar 10 MB. Anehnya, file XML yang dihasilkan menjadi tidak well formed. Pada beberapa tag tertentu muncul karakter-karakter aneh. Bahkan nama tag yang sudah jelas-jelas aku hardcode pun untuk record-record tertentu menjadi kosong atau menjadi karakter-karekter aneh. Masa untuk suatu record tertentu element XML yang dihasilkan bisa berubah, sementara untuk hampir semua record nggak ada masalah. Padahal kode yang digunakan untuk mem-parsing masing-masing record itu sama.

Dan setelah aku coba mengacak-ngacak kode yang aku buat sendiri, akhirnya aku menemukan solusi yang tak terduga. Aku mengganti nama variabel yang aku gunakan dengan nama lain, dan semua masalah terselesaikan. Benar-benar aneh. Sebagai informasi tambahan, PHP yang aku pakai adalah PHP versi 4. Aku rasa ini adalah salah satu bug di PHP versi tersebut yang berkaitan dengan masalah alokasi memory secara dinamis. Mau minta upgrade versinya juga pasti susah karena server yang digunakan adalah server production. Alhamdulillah... yang penting semuanya udah beres. Bikin frustasi aja selama 2 jam ini... Fiuhh...

3 comments:

joolean said...

nama variabelnya apaan kalo boleh tahu, ko? :D

Eko Budi Prasetyo said...

Nama variabelnya sih biasa-biasa aja. $tempElement (merepresentasikan suatu elemen tag XML). Setelah itu kuganti jd $tempElementTopics.

Seharusnya nggak ada masalah karena untuk record-record sebelumnya fine-fine aja.

Irpan said...

He..he... makanya ko, nama variable seharusnya sesuai dengan tujuan pemakaiannya ^_^