it-swarm-id.com

Ganti sesi php default

Saya sedang membangun aplikasi AngularJs menggunakan joomla di latar belakang. Aplikasi AngularJs dimuat sekali dan kemudian memanggil server selalu melalui ajax. Beberapa panggilan terjadi secara bersamaan. Jika saya menggunakan default PHP sesi dalam panggilan itu, php akan memproses satu panggilan sekaligus. Jadi, saya menulis sendiri Session handler saya untuk memungkinkan lebih dari satu panggilan sekaligus dan saya ingin menggunakannya sebagai pengganti Sesi php default. Apakah ada cara mudah untuk melakukan ini di Joomla atau saya harus menulis kelas JSession saya sendiri?

Edit

<?php
    session_start();
    sleep(10);
    echo "Hello";
?>

Jika Anda memanggil file ini dua kali di browser yang sama dalam waktu yang sama, panggilan pertama akan kembali dalam 10 detik, panggilan kedua akan kembali dalam 20 detik. Kelas JSession memanggil session_start (), sehingga joomla memiliki perilaku yang sama.

Edit

Ketika kita menggunakan opsi database atau memperpanjang JSessionStorage dengan pengendali sesi sendiri, joomla menggunakan session_set_save_handler() dan itu mengubah perilaku default dari mengunci sesi. Jadi, saya salah ketika mengatakan itu untuk memanggil session_start melibatkan mengunci sesi.

3
csbenjamin

Anda tidak harus menulis kelas JSession Anda sendiri, tetapi Anda harus menulis kelas yang memperpanjang JSessionStorage untuk diintegrasikan dengan penanganan sesi Joomla.

Kemungkinan besar Anda akan mengalami masalah ketika mencoba mengatur pengendali sesi melalui Konfigurasi Global. Timpa JFormFieldSessionHandler dengan versi yang menyertakan penangan Anda atau cukup tentukan secara manual di configuration.php. Namun opsi yang terakhir berarti bahwa Anda mungkin mengalami masalah ketika Anda mencoba menggunakan Konfigurasi Global di masa depan.

3
Rouven Weßling

Sunting: Terlihat bahwa jawabannya tidak benar.

Default Joomla Session Handler (Database) tidak mengunci sesi saat memproses. Jadi Anda tidak perlu khawatir tentang mengunci.

Bagaimanapun mungkin Anda mengganti data sesi permintaan pertama dengan data permintaan kedua.

4
Harald Leithner

Selamat datang di dunia panggilan asinkron. Saran saya adalah jangan menggunakan sesi untuk panggilan AJAX/RESTful sama sekali. Yang paling saya lakukan adalah memiliki semacam token otentikasi sehingga Anda tahu siapa yang menelepon.

3
Andrew Eddie

Joomla memungkinkan Anda untuk membuat backend Session Storage baru, yang dapat menyelesaikan masalah Anda. Cukup rentangkan JSessionStorage dengan kelas sesi khusus Anda, dan kemudian Anda dapat mengatur handler di file configuration.php Anda secara langsung. (Backend penyimpanan sesi khusus tidak muncul dalam konfigurasi admin global.)

2
Don Gilbert