Quoting Irving <[EMAIL PROTECTED]>:
> > btw, jika tidak ingin hal spt ini terjadi, anda harus mencegah
> > A dan B jalan bersamaan. misalnya dengan membuat lock file/semaphore
> > di awal A berjalan dan menghapusnya di akhir A. B mengecek dulu
> > keberadaan lock ini. jika ada, tunggu dahulu misalnya. baru _setelah_
> > melihat lock file lenyap dan langsung membuat lock bagi dirinya,
> > lakukan session_register().
> Nah, nanti kan berarti harus ada mekanisme sendiri, bukan dihandle oleh
> PHP.
> Apakah PHP memang tidak meng-handle? Atau ini asumsi anda?
> Dengan cara di atas, berarti si programmer harus memikirkan keberadaan
> file
> lock. Belum lagi masalah race condition. Apakah function file access di
> PHP
> itu memperhitungkan race condition? Atau cuman throw ke system function
> saja? Pertanyaannya jadi panjang =)
di PHP ada fungsi flock untuk mengatasi race condition terhadap akses file. Cuma
fungsi ini bersifat advisory, bukan mandatory. Jadi agar bisa berhasil, semua
program yang mau mengakses file musti memanggil fungsi flock dulu.
BTW, IMHO saya sependapat dengan bung Steven, kalau melihat penjelasan di php
manual. Kalau dipikir-pikir ada trade-offnya bila session php langsung
menghandle hal ini (race condition), padahal bung Irving sendiri yang bilang,
mengapa hal ini (concurency control) harus dilakukan ? Dalam artian, hal ini
(race condition) tidak sering terjadi berkaitan dengan sifat session itu sendiri
yang bukan untuk multiple browsing.
Tapi kalau misalnya race condition-nya sering terjadi dan merugikan, bisa
dilakukan trick-trick seperti yang bung Steven bilang.
Dengan kata lain, php memberi kebebasan kepada programmer untuk menyesuaikan
program sesuai dengan kebutuhan, seperti bahasa c :)
Mungkin, kalau benar-benar dibutuhkan, bisa jadi di php versi berikutnya, ada
fungsi untuk melock session atau register variable, yang mungkin pada
implementasinya sama atau mirip dengan trick-nya bung Steven :)
Hadi PS
[EMAIL PROTECTED]
--
Visit Ukhuwah.or.id at http://www.ukhuwah.or.id
The Coolest Islamic Portal in Indonesia
--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]