Rumah > Soal Jawab > teks badan
Saya sedang mencari jaminan bahawa pembolehubah statik tidak disimpan antara permintaan PHP. Berikut adalah soalan sebelum ini:
PHP pembolehubah statik merentas berbilang halaman .php
Adakah pembolehubah statik dalam php berterusan merentas permintaan?
Pembolehubah statik merentas sesi
Untuk menjadi jelas mereka tidak, tetapi mereka lebih kepada menyediakan cara untuk mengekalkan keadaan daripada perbincangan konkrit tentang tingkah laku yang diharapkan.
Sebagai contoh, jika kod PHP saya adalah seperti berikut:
function myfunc() { static $a=0; print $a++; } for ($i=0;$i<10;$i++) myfunc();
Kemudian setiap kali saya menjalankannya saya mendapat output 0123456789. Intuisi/pemahaman saya tentang PHP membuatkan saya agak pasti bahawa ini mesti berlaku.
Dalam eksperimen saya sendiri, saya menutup apache (pra-bercabang) ke dalam proses kanak-kanak untuk memastikan pembolehubah itu tidak diingati antara permintaan. Seperti yang saya jangkakan, ia tidak diingati antara permintaan. Tetapi ini hanyalah satu senario di mana PHP berjalan.
Apa yang saya cari ialah:
Pautan ke dokumentasi rasmi yang mengatakan ini adalah tingkah laku yang dijangka dan tidak akan berubah. Bahagian dokumentasi PHP yang berkaitan tidak menyebut perkara ini secara eksplisit (kecuali dalam ulasan).
Sebagai alternatif, apabila pembolehubah statik diingati merentas permintaan (seperti pelayan web atau rangka kerja PHP yang meningkatkan prestasi), ia mungkin tidak mengosongkan pembolehubah statik untuk meningkatkan kelajuan antara permintaan.
P粉6548949522023-10-31 00:02:00
PHP tidak mengekalkan keadaan permohonan antara permintaan. Semasa kitaran hayat aplikasi PHP, aplikasi itu dilaksanakan semula pada setiap permintaan. Pembolehubah statik direka bentuk untuk mengekalkan nilai pembolehubah dalam skop fungsi setempat apabila pelaksanaan meninggalkan skop. Tiada mana-mana dalam dokumentasi yang menyebut bahawa pembolehubah statik bertujuan untuk mengekalkan nilai merentas permintaan.