Rumah Operasi dan penyelenggaraan Nginx Bagaimana nginx menggunakan ctx untuk mencapai perkongsian data

Bagaimana nginx menggunakan ctx untuk mencapai perkongsian data

May 14, 2023 pm 05:25 PM
nginx ctx

Persekitaran: init_worker_by_lua, set_by_lua, rewrite_by_lua, access_by_lua, content_by_lua, header_filter_by_lua, body_filter_by_lua, log_by_lua, ngx.timer., balancer_by_lua

Jadual Lua ini boleh digunakan untuk menyimpan data persekitaran Lua berasaskan permintaan, dan hayatnya adalah sama dengan permintaan semasa (serupa dengan pembolehubah Nginx).

Rujuk contoh di bawah,

lokasi /ujian {

tulis semula_oleh_lua_sekat {

        ngx.ctx.foo = 76

}

access_by_lua_block {

        ngx.ctx.foo = ngx.ctx.foo + 3

}

content_by_lua_block {

        ngx.say(ngx.ctx.foo)

}

}

Akses GET /test output

79

Iaitu, entri ngx.ctx.foo adalah konsisten merentasi peringkat penulisan semula, akses dan pemprosesan kandungan permintaan.

Setiap permintaan, termasuk subpermintaan, mempunyai jadual ngx.ctx sendiri. Contohnya:

lokasi /sub {

content_by_lua_block {

        ngx.say("sub pre: ", ngx.ctx.blah)

        ngx.ctx.blah = 32

        ngx.say("sub post: ", ngx.ctx.blah)

}

}

lokasi /utama {

content_by_lua_block {

        ngx.ctx.blah = 73

        ngx.say("pra utama: ", ngx.ctx.blah)

Res setempat = ngx.location.capture("/sub")

        ngx.print(res.body)

        ngx.say("catatan utama: ", ngx.ctx.blah)

}

}

Akses GET /output utama

pra utama: 73

sub pra: tiada

sub post: 32

jawatan utama: 73

Di sini, mengubah suai entri ngx.ctx.blah dalam permintaan anak tidak menjejaskan entri dengan nama yang sama dalam permintaan induk, kerana mereka masing-masing mengekalkan versi ngx.ctx.blah yang berbeza.

Ubah hala dalaman akan memusnahkan data ngx.ctx (jika ada) dalam permintaan asal dan permintaan baharu akan mempunyai jadual ngx.ctx kosong. Contohnya,

lokasi /baharu {

content_by_lua_block {

        ngx.say(ngx.ctx.foo)

}

}

lokasi /orig {

content_by_lua_block {

        ngx.ctx.foo = "hello"

        ngx.exec("/baru")

}

}

Mengakses GET /orig akan mengeluarkan

tiada

bukannya nilai "hello" asal.

Nilai data sewenang-wenangnya, termasuk penutupan Lua dan jadual bersarang, boleh dimasukkan ke dalam jadual "ajaib" ini, yang turut membenarkan metakaedah tersuai didaftarkan.

Anda juga boleh menulis ganti ngx.ctx dengan jadual Lua baharu, mis ngx.ctx = { foo = 32, bar = 54 }

Apabila digunakan dalam persekitaran init_worker_by_lua*, jadual ini adalah sama dengan pemegang Lua semasa sepanjang hayat.

Pertanyaan jadual ngx.ctx memerlukan panggilan meta-kaedah yang agak mahal, yang jauh lebih perlahan daripada menghantar data berasaskan permintaan terus melalui parameter fungsi pengguna sendiri. Oleh itu, jangan menyalahgunakan API ini hanya untuk menyimpan parameter fungsi pengguna, kerana ia mungkin mempunyai kesan yang ketara terhadap prestasi.

Dan kerana metamethod "sihir", jangan cuba menggunakan tahap "tempatan" ngx.ctx pada tahap modul lua, contohnya perkongsian data peringkat pekerja. Contoh berikut adalah buruk:

-- mymodule.lua

tempatan _M = {}

-- Ngx.ctx dalam baris berikut tergolong dalam satu permintaan, tetapi pembolehubah ctx berada pada tahap modul Lua

-- dan kepunyaan seorang pekerja.

ctx tempatan = ngx.ctx

fungsi _M.main()

ctx.foo = "bar"

tamat

kembali _M

Yang berikut hendaklah digunakan sebaliknya:

-- mymodule.lua

tempatan _M = {}

fungsi _M.utama(ctx)

ctx.foo = "bar"

tamat

kembali _M

Maksudnya, panggilan pemanggil ke jadual ctx harus diselesaikan dengan menghantar parameter fungsi.

Atas ialah kandungan terperinci Bagaimana nginx menggunakan ctx untuk mencapai perkongsian data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1596
276
Bagaimana cara melaksanakan kod PHP selepas menulis kod PHP? Beberapa cara biasa untuk melaksanakan kod php Bagaimana cara melaksanakan kod PHP selepas menulis kod PHP? Beberapa cara biasa untuk melaksanakan kod php May 23, 2025 pm 08:33 PM

Kod PHP boleh dilaksanakan dengan banyak cara: 1. Gunakan baris arahan untuk terus memasukkan "nama fail php" untuk melaksanakan skrip; 2. Masukkan fail ke dalam direktori root dokumen dan mengaksesnya melalui penyemak imbas melalui pelayan web; 3. Jalankannya dalam IDE dan gunakan alat debugging terbina dalam; 4. Gunakan kotak pasir PHP dalam talian atau platform pelaksanaan kod untuk ujian.

Setelah memasang nginx, laluan fail konfigurasi dan tetapan awal Setelah memasang nginx, laluan fail konfigurasi dan tetapan awal May 16, 2025 pm 10:54 PM

Memahami laluan fail konfigurasi Nginx dan tetapan awal sangat penting kerana ia adalah langkah pertama dalam mengoptimumkan dan menguruskan pelayan web. 1) Laluan fail konfigurasi biasanya /etc/nginx/nginx.conf. Sintaks boleh didapati dan diuji menggunakan arahan NGINX-T. 2) Tetapan awal termasuk tetapan global (seperti pengguna, worker_processes) dan tetapan HTTP (seperti termasuk, log_format). Tetapan ini membolehkan penyesuaian dan lanjutan mengikut keperluan. Konfigurasi yang salah boleh membawa kepada isu prestasi dan kelemahan keselamatan.

Bagaimana untuk mengehadkan sumber pengguna di Linux? Bagaimana cara mengkonfigurasi ULIMIT? Bagaimana untuk mengehadkan sumber pengguna di Linux? Bagaimana cara mengkonfigurasi ULIMIT? May 29, 2025 pm 11:09 PM

Sistem Linux mengehadkan sumber pengguna melalui perintah ULIMIT untuk mengelakkan penggunaan sumber yang berlebihan. 1.Ulimit adalah arahan shell terbina dalam yang boleh mengehadkan bilangan deskriptor fail (-N), saiz memori (-V), kiraan thread (-u), dan lain-lain, yang dibahagikan kepada had lembut (nilai berkesan semasa) dan had keras (had atas maksimum). 2. Gunakan perintah ULIMIT secara langsung untuk pengubahsuaian sementara, seperti ULIMIT-N2048, tetapi hanya sah untuk sesi semasa. 3. Untuk kesan tetap, anda perlu mengubah suai /etc/security/limits.conf dan fail konfigurasi PAM, dan tambah sessionrequiredpam_limits.so. 4. Perkhidmatan SystemD perlu menetapkan LIM dalam fail unit

Langkah-langkah khusus untuk mengkonfigurasi Sendiri Perkhidmatan Nginx Langkah-langkah khusus untuk mengkonfigurasi Sendiri Perkhidmatan Nginx May 16, 2025 pm 10:39 PM

Langkah -langkah untuk memulakan konfigurasi nginx adalah seperti berikut: 1. Buat fail perkhidmatan Systemd: Sudonano/etc/SystemD/System/nginx.service, dan tambah konfigurasi yang relevan. 2. Muat semula konfigurasi Systemd: SudosystemCtldaemon-Reload. 3. Dayakan Nginx untuk boot secara automatik: sudosystemctlenablenginx. Melalui langkah -langkah ini, NGINX akan dijalankan secara automatik apabila sistem dimulakan, memastikan kebolehpercayaan dan pengalaman pengguna laman web atau aplikasi.

Apakah kemahiran konfigurasi Debian Nginx? Apakah kemahiran konfigurasi Debian Nginx? May 29, 2025 pm 11:06 PM

Apabila mengkonfigurasi Nginx pada sistem Debian, berikut adalah beberapa petua praktikal: struktur asas fail konfigurasi Global Fail: Tentukan parameter tingkah laku yang mempengaruhi keseluruhan perkhidmatan Nginx, seperti bilangan thread pekerja dan kebenaran pengguna yang sedang berjalan. Bahagian Pengendalian Acara: Memutuskan bagaimana Nginx berurusan dengan sambungan rangkaian adalah konfigurasi utama untuk meningkatkan prestasi. Bahagian Perkhidmatan HTTP: Mengandungi sejumlah besar tetapan yang berkaitan dengan perkhidmatan HTTP, dan boleh membenamkan beberapa pelayan dan blok lokasi. Pilihan Konfigurasi Teras Worker_Connections: Tentukan bilangan maksimum sambungan yang setiap thread pekerja boleh mengendalikan, biasanya ditetapkan ke 1024. Multi_accept: Aktifkan mod penerimaan pelbagai sambungan dan tingkatkan keupayaan pemprosesan serentak. s

Konfigurasikan PHPStorm dan persekitaran pembangunan kontena Docker Konfigurasikan PHPStorm dan persekitaran pembangunan kontena Docker May 20, 2025 pm 07:54 PM

Melalui teknologi kontena Docker, pemaju PHP boleh menggunakan PHPStorm untuk meningkatkan kecekapan pembangunan dan konsistensi alam sekitar. Langkah -langkah khusus termasuk: 1. Buat Dockerfile untuk menentukan persekitaran PHP; 2. Konfigurasikan sambungan Docker dalam phpStorm; 3. Buat fail DockerCompose untuk menentukan perkhidmatan; 4. Konfigurasikan penterjemah PHP jauh. Kelebihannya adalah konsistensi alam sekitar yang kuat, dan kelemahannya termasuk masa permulaan yang panjang dan debugging kompleks.

Apakah teknik pengoptimuman SEO untuk debian apache2? Apakah teknik pengoptimuman SEO untuk debian apache2? May 28, 2025 pm 05:03 PM

Kemahiran pengoptimuman SEO Debianapache2 meliputi pelbagai peringkat. Berikut adalah beberapa kaedah utama: Penyelidikan Kata Kunci: Gunakan alat (seperti Alat Magic Kata Kunci) untuk melombong kata kunci teras dan tambahan halaman. Penciptaan Kandungan Berkualiti Tinggi: Menghasilkan kandungan yang berharga dan asli, dan kandungan perlu dijalankan penyelidikan mendalam untuk memastikan bahasa yang lancar dan format yang jelas. Susun atur kandungan dan Pengoptimuman Struktur: Gunakan tajuk dan sari kata untuk membimbing bacaan. Tulis perenggan dan ayat yang ringkas dan jelas. Gunakan senarai untuk memaparkan maklumat utama. Menggabungkan multimedia seperti gambar dan video untuk meningkatkan ekspresi. Reka bentuk kosong meningkatkan bacaan teks. Tahap Teknikal Penambahbaikan SEO: Robots.txt Fail: Menentukan hak akses crawler enjin carian. Mempercepatkan Laman Web Memuat: Dioptimumkan dengan bantuan mekanisme caching dan konfigurasi Apache

Cara melaksanakan penggunaan automatik Docker di Debian Cara melaksanakan penggunaan automatik Docker di Debian May 28, 2025 pm 04:33 PM

Melaksanakan penggunaan automatik Docker pada sistem Debian boleh dilakukan dengan pelbagai cara. Here are the detailed steps guide: 1. Install Docker First, make sure your Debian system remains up to date: sudoaptupdatesudoaptupgrade-y Next, install the necessary software packages to support APT access to the repository via HTTPS: sudoaptinstallapt-transport-httpsca-certificatecurlsoftware-properties-common-y Import the official GPG key of Docker: curl-

See all articles