Rumah > rangka kerja php > Swoole > Susun mata pengetahuan swole secara terperinci (perkongsian ringkasan)

Susun mata pengetahuan swole secara terperinci (perkongsian ringkasan)

WBOY
Lepaskan: 2022-02-28 18:13:52
ke hadapan
3500 orang telah melayarinya

Artikel ini membawa anda pengetahuan yang berkaitan tentang swoole, termasuk permintaan fastcgi kepada proses induk swoole untuk diedarkan kepada proses kanak-kanak, tetapi ia tidak akan menjadi seperti proses anak php-fpm yang keluar selepas digunakan dan masalah lain yang berkaitan semua orang.

Susun mata pengetahuan swole secara terperinci (perkongsian ringkasan)

Pembelajaran yang disyorkan: tutorial video swole

swolePenjelasan proses bilik sembang

Seluruh proses bilik sembang ialah:

- Log masuk antara muka http pengguna dibenarkan

- Dapatkan senarai rakan, mesej terakhir yang belum dibaca dan bilangan mesej yang belum dibaca rakan yang berbeza (untuk paparan halaman utama) melalui antara muka http permintaan yang dibenarkan

- Dapatkan senarai kumpulan melalui permintaan kebenaran (mesej kumpulan tidak dibaca atau belum dibaca untuk menjimatkan ruang storan)

- Cipta pautan ws

- Daftarkan mekanisme pemotongan dan penyambungan semula Apabila acara penutup dicetuskan, sambung semula ws

- Sediakan pemasa ping dan ping setiap 30 saat

- Dapatkan semua mesej yang belum dibaca melalui antara muka ws, proseskannya pada klien, tolaknya ke bar pemberitahuan, dsb.

- Terima push mesej baharu dan paparkannya dalam senarai mesej

- Apabila anda mengklik antara muka mesej kumpulan/rakan , anda akan mendapat n mesej terkini secara automatik, pengguna akan terus mendapat n mesej apabila menarik diri

jalankan mod jalankan

mod protokol cgi

mod cgi Antara Muka Gerbang Biasa (Antara Muka Gerbang Biasa) , yang membolehkan pelayan web menghantar protokol tertentu Untuk berkomunikasi dengan aplikasi, prinsip panggilan adalah kira-kira:

Permintaan pengguna->Pelayan web menerima permintaan->proses anak garpu

Panggil atur cara/laksanakan atur cara->Atur cara mengembalikan kandungan/Panggilan atur cara tamat->Pelayan web menerima kandungan->Kembali kepada pengguna

Memandangkan setiap permintaan pengguna perlu bercabang untuk mencipta proses, panggil program sekali, dan kemudian musnahkan proses, jadi prestasinya rendah

mod protokol cgi pantas

cepat-cgi ialah versi mod cgi yang dinaik taraf, ia adalah seperti Ia adalah cgi pemastautin selagi ia dihidupkan, ia sentiasa boleh memproses permintaan tanpa menamatkan proses secara kasarnya:

pelayan web pemulaan proses cgi cepat-> fork n proses terlebih dahulu

Permintaan pengguna->pelayan web menerima permintaan->menyerahkannya kepada pengurus proses cgi cepat->kawasan pengurusan proses cgi cepat menerimanya dan memberikannya kepada salah satu pemprosesan cepat-cgi percuma->Pemprosesan selesai, proses cepat-cgi menjadi terbiar, menunggu permintaan seterusnya->Pelayan web menerima kandungan->Kembali kepada pengguna Mod modul

Mod modul

Apache php berjalan, modul mod digunakan secara lalai, yang menggunakan php sebagai apache Modul dimulakan apabila apache dimulakan Apabila permintaan pengguna diterima, ia diproses secara langsung dengan memanggil modul mod_php

mod php- cli

mod php-cli tergolong dalam mod baris arahan . Ia adalah yang paling sesuai untuk ramai pembangun yang baru mula belajar php dan mula wamp dan wnmp Mod operasi yang tidak dikenali

Mod ini tidak memerlukan penggunaan. program lain. Anda boleh terus memasukkan php xx.php untuk melaksanakan kod php

Perbezaan jelas antara mod baris arahan dan mod web biasa ialah:

  • * Tiada Masa Tamat

  • * Penampan dimatikan secara lalai

  • * Penggunaan STDIN dan STDOUT standard input/output/ralat

  • * echo var_dump, phpinfo dan output lain dikeluarkan terus Pergi ke konsol

  • * Kelas/fungsi yang tersedia adalah berbeza

  • * Perbezaan dalam konfigurasi php.ini

php-fpmPHP-FPM (FastCGI Process Manager) digunakan untuk menggantikan kebanyakan fungsi tambahan PHP FastCGI dan sangat berguna untuk laman web dengan muatan tinggi.

Ciri-cirinya termasuk:

  • Ciri pengurusan proses lanjutan yang menyokong hentian/permulaan yang lancar;

  • boleh berfungsi dalam persekitaran uid/gid/chroot yang berbeza, mendengar port yang berbeza dan menggunakan fail konfigurasi php.ini yang berbeza (boleh menggantikan tetapan safe_mode);

  • stdout dan stderr logging;
  • Dapat memulakan semula dan cache opcode yang rosak apabila situasi yang tidak dijangka berlaku;
  • Sokongan pengoptimuman muat naik fail;
  • "Log perlahan" - skrip rekod (bukan sahaja merekodkan nama fail, tetapi juga merekodkan maklumat jejak belakang PHP, anda boleh menggunakan ptrace atau alat yang serupa untuk membaca dan menganalisis larian data proses jauh) Kelambatan tidak normal yang disebabkan oleh larian;
  • fastcgi_finish_request() - Fungsi khas: digunakan untuk terus melakukan kerja yang memakan masa di latar belakang (penukaran input video, pemprosesan statistik, dll.) selepas permintaan selesai dan data disegarkan semula;
  • Penjanaan sub-proses dinamik/statik;
  • Maklumat status berjalan SAPI asas (serupa dengan mod_status Apache);
  • Fail konfigurasi berdasarkan php.ini.

Prinsip kerja:Ia berfungsi secara kasar Untuk: permulaan php-fpm->Jana proses pemprosesan protokol cgi yang pantas->Dengar port untuk menunggu tugasan

Permintaan pengguna->pelayan web menerima permintaan-> Permintaan dimajukan ke php-fpm->php-fpm diserahkan kepada proses terbiar untuk diproses

->proses pemprosesan selesai->php-fpm kembali ke pelayan web-> pelayan web menerima data-> Kembali kepada pengguna

Protokol Rangkaian

Protokol rangkaian ialah peraturan dan standard yang ditetapkan untuk pertukaran data dalam rangkaian komputer Atau set yang dipersetujui, semua komunikasi antara komputer/telefon mudah alih dan peranti rangkaian lain mesti mengikut protokol rangkaian.

Protokol rangkaian dibahagikan kepada 7 peringkat mengikut langkah komunikasi Dari atas ke bawah:

  • Lapisan aplikasi.

  • Lapisan persembahan

  • Lapisan Sesi

  • Lapisan Pengangkutan

  • Lapisan rangkaian

  • Lapisan Pautan Data

  • Lapisan fizikal

protokol ip (lapisan rangkaian)

Protokol IP ialah protokol asas Internet pada masa ini merupakan protokol rangkaian yang paling popular

<.>Skop

Tanggungjawab IP ialah menghantar data dari sumber ke destinasi. Ia tidak bertanggungjawab untuk memastikan kebolehpercayaan penghantaran, kawalan aliran, pesanan paket dan perkhidmatan lain yang biasa kepada protokol hos-ke-hos.

Antaramuka

Protokol ini dipanggil oleh protokol hos-ke-hos, dan protokol ini bertanggungjawab untuk memanggil protokol rangkaian tempatan untuk menghantar paket data ke hos gerbang atau destinasi seterusnya. Sebagai contoh, TCP boleh memanggil protokol IP, menghantar alamat destinasi dan alamat sumber sebagai parameter apabila IP membentuk paket data dan memanggil antara muka rangkaian tempatan (protokol) untuk menghantar paket data.

Operasi

IP melaksanakan dua fungsi asas: pengalamatan dan pembahagian. IP boleh menghantar paket data ke alamat destinasi mengikut alamat destinasi yang disertakan dalam pengepala paket data Dalam proses ini, IP bertanggungjawab untuk memilih laluan penghantaran ini dipanggil fungsi penghalaan. Jika sesetengah rangkaian hanya boleh menghantar paket data kecil, IP boleh memasang semula paket data dan menunjukkannya dalam medan pengepala. Fungsi asas ini disertakan dalam modul IP, yang wujud pada setiap hos dan get laluan dalam rangkaian, dan modul ini (terutamanya pada get laluan) mempunyai penghalaan dan fungsi perkhidmatan lain. Untuk IP, tiada sambungan antara paket data, dan sukar untuk mengatakan apa-apa tentang sambungan atau pautan logik untuk IP.

IP menggunakan empat teknologi utama untuk menyediakan perkhidmatan: jenis perkhidmatan, seumur hidup, pilihan dan kod semak pengepala. Jenis perkhidmatan merujuk kepada kualiti perkhidmatan yang diharapkan. Jenis perkhidmatan ialah satu set parameter yang mewakili perkhidmatan yang boleh disediakan oleh Internet. Jenis perkhidmatan ini digunakan oleh get laluan untuk memilih parameter penghantaran sebenar pada rangkaian tertentu, atau pada rangkaian seterusnya untuk dilalui, atau get laluan seterusnya untuk menghalakan paket ini. Masa untuk hidup ialah had atas berapa lama paket boleh hidup. Ia ditetapkan oleh pengirim dan diproses oleh laluan. Jika masa untuk hidup adalah sifar sebelum ketibaan, paket akan dibuang. Pilihan ini penting untuk fungsi kawalan, tetapi untuk komunikasi biasa kehadirannya tidak diperlukan. Pilihan termasuk cap masa, keselamatan dan penghalaan khas. Kod semak pengepala memastikan penghantaran data yang betul. Jika semakan gagal, keseluruhan paket data akan dibuang.

alamat ip

Apabila menghantar data dari sumber ke destinasi, alamat IP diperlukan untuk penghantaran alamat IP kini dibahagikan kepada alamat IPv4 dan IPv6 yang paling biasa sekarang ialah alamat IPv4, seperti 127.0.0.1 (mesin ini Alamat) 119.75.217.109 (Baidu ip)

Transmisi IP mesti mempunyai alamat ip yang jelas sebelum data boleh dihantar

tcp (lapisan pengangkutan)

TCP (Transmission Control Protocol) Ia adalah berorientasikan sambungan, boleh dipercayai, protokol komunikasi lapisan pengangkutan berasaskan aliran bait, yang ditakrifkan oleh RFC 793 IETF. Dalam model rangkaian komputer OSI yang dipermudahkan, ia melengkapkan fungsi yang ditentukan oleh lapisan pengangkutan lapisan keempat (UDP) ialah satu lagi protokol pengangkutan penting dalam lapisan yang sama. Dalam suite protokol Internet, lapisan TCP ialah lapisan perantaraan yang terletak di atas lapisan IP dan di bawah lapisan aplikasi. Sambungan seperti paip yang boleh dipercayai sering diperlukan antara lapisan aplikasi hos yang berbeza, tetapi lapisan IP tidak menyediakan mekanisme aliran sedemikian, tetapi menyediakan pensuisan paket yang tidak boleh dipercayai.

Lapisan aplikasi menghantar aliran data yang diwakili oleh bait 8-bit untuk penghantaran antara rangkaian ke lapisan TCP, dan kemudian TCP Strim data dibahagikan kepada segmen dengan panjang yang sesuai (biasanya dihadkan oleh unit penghantaran maksimum (MTU) lapisan pautan data rangkaian yang komputer disambungkan). TCP kemudian menghantar paket yang terhasil ke lapisan IP, yang menghantar paket melalui rangkaian ke lapisan TCP entiti penerima. Untuk memastikan kehilangan paket tidak berlaku, TCP memberikan setiap paket nombor jujukan Pada masa yang sama, nombor jujukan juga memastikan bahawa paket yang dihantar kepada entiti penerima diterima dengan teratur. Entiti penerima kemudian menghantar balik pengakuan sepadan (ACK) untuk paket yang berjaya diterima jika entiti pengirim tidak menerima pengakuan dalam kelewatan perjalanan pergi balik (RTT) yang munasabah, paket data yang sepadan diandaikan telah diterima akan dihantar semula. TCP menggunakan fungsi checksum untuk menyemak sama ada data mempunyai ralat dikira kedua-dua semasa menghantar dan menerima.

Tiga jabat tangan

TCP ialah protokol lapisan pengangkutan dalam Internet dan menggunakan protokol jabat tangan tiga hala untuk mewujudkan sambungan. Selepas pihak aktif menghantar permintaan sambungan SYN, ia menunggu pihak lain membalas dengan SYN ACK, dan akhirnya melakukan pengesahan ACK pada SYN pihak lain. Kaedah mewujudkan sambungan ini boleh menghalang sambungan yang salah. Protokol kawalan aliran yang digunakan oleh TCP ialah protokol tetingkap gelongsor bersaiz berubah. Proses jabat tangan tiga hala TCP adalah seperti berikut:

  • Pelanggan menghantar mesej SYN (SEQ=x) ke pelayan dan memasuki keadaan SYN_SEND.

  • Pelayan menerima mesej SYN, membalas dengan mesej SYN (SEQ=y) ACK (ACK=x 1) dan memasuki keadaan SYN_RECV.

  • Pelanggan menerima mesej SYN daripada pelayan, membalas dengan mesej ACK (ACK=y 1) dan memasuki keadaan Ditubuhkan.

Sambungan berjaya

Selepas sambungan berjaya, kedua-dua pihak boleh menghantar aliran bait antara satu sama lain, dan sambungan boleh ditutup pada bila-bila masa Data yang dihantar mempunyai ciri berikut

  • Data yang dihantar dibahagikan oleh TCP kepada blok data yang paling sesuai untuk dihantar dan dihantar ke protokol IP ini dipanggil segmen mesej atau segmen

  • tcp ialah sambungan yang boleh dipercayai Setiap kali segmen data dihantar, pemasa akan dimulakan Setiap kali segmen data diterima, pengesahan akan dihantar pemasa tidak menerima data dalam masa, Setelah disahkan, data akan dihantar semula

  • TCP akan mengekalkan jumlah semak pengepala dan datanya. Ini ialah jumlah semak hujung ke hujung yang direka untuk mengesan sebarang perubahan dalam data semasa penghantaran. Jika terdapat ralat dalam jumlah semak segmen yang diterima, TCP akan membuang segmen tersebut dan tidak mengakui penerimaan segmen tersebut (dengan harapan pengirim akan tamat masa dan menghantar semula).

  • Dua aplikasi bertukar aliran bait bait 8-bit melalui sambungan TCP. TCP tidak memasukkan pengecam rekod ke dalam aliran bait. Kami memanggil perkhidmatan bytestream ini. Jika aplikasi satu pihak mula-mula menghantar 10 bait, kemudian 20 bait, dan kemudian 50 bait, pihak satu lagi sambungan tidak akan dapat memahami berapa banyak bait yang dihantar oleh pengirim setiap kali. Selagi penimbal terimanya sendiri tidak penuh, penerima TCP akan menerima seberapa banyak yang boleh diterimanya. Satu hujung meletakkan aliran bait pada sambungan TCP, dan aliran bait yang sama akan muncul pada hujung satu lagi sambungan TCP.

Lambai empat kali

Mewujudkan sambungan memerlukan tiga jabat tangan, dan menamatkan sambungan memerlukan empat gelombang Ini disebabkan oleh penutupan separuh TCP. Proses khusus adalah seperti berikut.

  • Proses permohonan mula-mula memanggil tutup, mengatakan bahawa penghujung melakukan "penutupan aktif". TCP pada hujung itu kemudian menghantar segmen FIN untuk menunjukkan bahawa data telah dihantar.

  • Rakan sebaya yang menerima FIN ini melakukan "tutup pasif" (tutup pasif), dan FIN ini disahkan oleh TCP.

  • Nota: Penerimaan FIN juga diserahkan kepada proses permohonan penerima sebagai fail akhir, dan diletakkan dalam baris gilir menunggu proses permohonan diterima Selepas sebarang data lain, kerana penerimaan FIN bermakna proses permohonan yang menerima tidak mempunyai data tambahan untuk diterima pada sambungan yang sepadan.

  • Selepas beberapa ketika, proses permohonan yang menerima aksara akhir fail ini akan memanggil dekat untuk menutup soketnya. Ini menyebabkan TCPnya turut menghantar FIN.

  • TCP pengirim asal yang menerima FIN akhir ini (iaitu penghujung yang melakukan penutupan aktif) mengesahkan FIN ini. Memandangkan setiap arah memerlukan FIN dan ACK, 4 segmen biasanya diperlukan.

"Biasanya" bermaksud bahawa dalam beberapa kes, FIN langkah 1 dihantar bersama-sama dengan data Selain itu, segmen yang dihantar dalam langkah 2 dan 3 adalah kedua-duanya Dari sisi yang melakukan penutupan pasif, adalah mungkin untuk digabungkan menjadi bahagian. Di antara langkah 2 dan 3, adalah mungkin untuk mengalirkan data dari bahagian yang melakukan penutupan pasif ke bahagian yang melakukan penutupan aktif Ini dipanggil "separuh tutup". Apabila proses Unix ditamatkan, sama ada secara sukarela (memanggil keluar atau kembali daripada fungsi utama) atau secara tidak sukarela (menerima isyarat yang menamatkan proses), semua deskriptor terbuka ditutup, yang juga menyebabkan mana-mana TCP masih terbuka A FIN juga dikeluarkan pada sambungannya. Sama ada pelanggan atau pelayan boleh melakukan penutupan aktif. Biasanya, pelanggan melakukan penutupan aktif, tetapi beberapa protokol, seperti HTTP/1.0, meminta pelayan melakukan penutupan aktif.

tcp dalam php

php boleh diakses melalui Fungsi soket, sambungan swoole, dan fungsi aliran mencipta soket protokol tcp, mengikat port kad rangkaian, dan melaksanakan operasi pelayan/klien tcp Dalam php, kita tidak perlu mengetahui jabat tangan/lambai tcp, kita hanya perlu mengetahui ip:port Hanya boleh menyambung/membuat pelayan/klien tcp

Menggunakan soket PHP, kami boleh terus menghantar rentetan dan menerima rentetan yang lain adalah bahasa dan perkara yang perlu dilakukan oleh sistem pengendalian >

Kami hanya perlu mengendalikan integriti rentetan Sebagai contoh, kami menggunakan php sebagai pelayan tcp

  • Selepas sambungan klien berjaya, "easyswoole. ialah rangka kerja swole yang sangat baik" rentetan

  • Pelayan hanya menerima 9 bait setiap kali, jadi pemerolehan pertama hanya akan menerima rentetan "easyswool" yang tidak lengkap dan anda perlu terus mendapatkan data

Protokol http

Analisis Proses

Proses permintaan http adalah kira-kira seperti berikut:

  • Pengguna memasukkan dalam penyemak imbas www.easyswoole.com

  • analisis pelayan dns/atau hos tempatan, perbandingan hos penghala untuk mendapatkan ip

  • Jika penyemak imbas mengakses port lalai 80, alamat tcp yang diakses ialah ip:80

  • Protokol tcp 3 hala jabat tangan untuk mewujudkan sambungan

  • Hantar tajuk permintaan permintaan http

  • Pelayan memperoleh pengepala permintaan permintaan http, menunjukkan bahawa akses ialah akses http, menghuraikan pengepala permintaan http dan memperoleh jenis permintaan, format permintaan dan data permintaan (kuki, dapatkan, hantar data)

  • Pelayan menghantar data respons dan memutuskan sambungan secara aktif

  • Pelayar menerima data respons, menghuraikan jenis teks respons, menghuraikan data dan memutuskan sambungan

    Dalam protokol https, terdapat lapisan tambahan protokol penyulitan dan penyahsulitan tls dan ssl dalam permintaan dan respons Port lalai telah berubah daripada 80 kepada 443

http dalam phper

disebabkan oleh Selalunya, PHP digunakan untuk pelayan web, jadi protokol yang paling kerap didedahkan oleh pembangun PHP ialah protokol HTTP berdasarkan protokol TCP/IP

Di kalangan pengaturcara junior PHP, sebenarnya, tidak ada pemahaman terperinci tentang protokol http, tetapi anda boleh menggunakan rangkaian f12->pelayar untuk melihat pengepala permintaan khusus protokol http dan pengepala respons yang dihantar oleh pelayan

Protokol WebSocket

Jana latar belakang

Sebelum terdapat protokol WebSocket, satu-satunya cara untuk melaksanakan ruang sembang pada halaman web ialah menggunakan ajax untuk membuat tinjauan secara berterusan dan meminta sama ada pelayan mempunyai data ini kaedah akan menyebabkan beberapa siri masalah:

  • Jika selang pengundian terlalu pendek, ia akan menyebabkan pelanggan dan pelayan terus melaksanakan http tcp berjabat tangan dalam tempoh masa /Gerakan melambai dan penghantaran pengepala permintaan http dan pengepala respons menggunakan banyak sumber pelayan Jika terdapat bilangan pengguna yang besar, pelayan akan sibuk dan juga masa henti

  • Pelanggan hanya boleh mendapatkan sama ada pelayan mempunyai data untuk dikembalikan dengan menghantar permintaan http setiap kali, dan ketepatan masa data tidak dapat dijamin

Disebabkan situasi ini, WebSocket muncul, ia hanya memerlukan satu jabat tangan http, dan ia boleh dikekalkan Sambungan yang panjang membolehkan pelayan menghantar mesej secara aktif kepada pelanggan, mengurangkan penggunaan mekanisme pengundian

Pelaksanaan Prinsip

Dalam proses melaksanakan sambungan websocket, anda perlu menghantar permintaan sambungan websocket melalui penyemak imbas, dan kemudian pelayan menghantar respons biasanya dipanggil "Jabatan Tangan" .

Dalam API WebSocket, penyemak imbas dan pelayan hanya perlu melakukan tindakan berjabat tangan, dan kemudian saluran pantas dibentuk antara penyemak imbas dan pelayan.

Data boleh dipindahkan terus antara keduanya. Dalam protokol WebSocket ini, ia membawa dua faedah utama kepada kami untuk mencapai perkhidmatan segera:

  • Pengepala: Pengepala yang berkomunikasi antara satu sama lain adalah sangat kecil - kira-kira sahaja 2 Bait

  • Tekan Pelayan: Tekan Pelayan Pelayan tidak lagi menerima permintaan penyemak imbas secara pasif sebelum mengembalikan data, tetapi secara aktif menolaknya ke penyemak imbas apabila terdapat data baharu.

udp (lapisan pengangkutan)

UDP ialah singkatan dari User Datagram Protocol Nama Cina ialah User Datagram Protocol Ia adalah protokol lapisan pengangkutan tanpa sambungan dalam model rujukan OSI (Open System Interconnection), menyediakan Perkhidmatan Pemindahan Mesej berorientasikan transaksi yang mudah dan tidak boleh dipercayai. IETF RFC 768 ialah spesifikasi rasmi untuk UDP. Nombor protokol UDP dalam paket IP ialah 17.

Nama penuh protokol UDP ialah User Datagram Protocol Dalam rangkaian, ia digunakan untuk memproses paket data seperti protokol TCP. Ia adalah protokol Tanpa Sambungan. Dalam model OSI, lapisan keempat - lapisan pengangkutan, adalah lapisan atas protokol IP. UDP mempunyai kelemahan kerana tidak menyediakan pengelompokan paket data, pemasangan, dan ketidakupayaan untuk mengisih paket data Dalam erti kata lain, selepas mesej dihantar, adalah mustahil untuk mengetahui sama ada ia telah tiba dengan selamat dan lengkap. UDP digunakan untuk menyokong aplikasi rangkaian yang perlu menghantar data antara komputer. Banyak aplikasi rangkaian pelanggan/pelayan, termasuk sistem persidangan video rangkaian, memerlukan penggunaan protokol UDP. Protokol UDP telah digunakan selama bertahun-tahun sejak penubuhannya Walaupun kegemilangan awalnya telah dibayangi oleh beberapa protokol yang serupa, UDP masih merupakan protokol lapisan pengangkutan rangkaian yang sangat praktikal dan boleh dilaksanakan sehingga hari ini.

Seperti protokol TCP (Transmission Control Protocol) yang terkenal, protokol UDP berada terus di atas protokol IP (Internet Protocol). Menurut model rujukan OSI (Open Systems Interconnection), kedua-dua UDP dan TCP adalah protokol lapisan pengangkutan. Fungsi utama protokol UDP adalah untuk memampatkan trafik data rangkaian ke dalam bentuk paket data. Paket data biasa ialah unit penghantaran data binari. 8 bait pertama bagi setiap paket data digunakan untuk mengandungi maklumat pengepala, dan bait selebihnya digunakan untuk mengandungi data penghantaran tertentu.

udp dan tcp

Kedua-dua udp dan tcp ialah protokol lapisan pengangkutan, kedua-duanya terletak pada lapisan atas protokol ip Perbezaannya ialah:

  • <.>

    udp ialah protokol tanpa sambungan dan tidak memerlukan jabat tangan tcp

  • Panjang maksimum udp yang dihantar ialah 65535, manakala tcp boleh menghantar secara berterusan selepas berjabat tangan

  • Protokol udp menggunakan nilai semakan dalam pengepala untuk memastikan keselamatan data. Nilai semakan mula-mula dikira oleh algoritma khas pada pengirim data dan perlu dikira semula selepas ia dihantar kepada penerima. Jika datagram diganggu oleh pihak ketiga semasa penghantaran atau rosak akibat bunyi talian atau sebab lain, pengiraan semak pengirim dan penerima tidak akan sepadan, jadi protokol UDP boleh mengesan sama ada terdapat ralat. Ini berbeza daripada protokol TCP, yang memerlukan nilai semakan.

  • Mesej UDP tidak mempunyai jaminan kebolehpercayaan, jaminan jujukan dan medan kawalan aliran, dsb., dan kebolehpercayaannya adalah lemah. Walau bagaimanapun, kerana protokol UDP mempunyai pilihan kawalan yang lebih sedikit, kelewatan semasa penghantaran data adalah kecil, dan kecekapan penghantaran data adalah tinggi Ia sesuai untuk aplikasi yang tidak memerlukan kebolehpercayaan yang tinggi, atau aplikasi yang boleh menjamin kebolehpercayaan, seperti DNS. TFTP, dan SNMP tunggu.

  • Dalam persekitaran yang kualiti rangkaian sangat tidak memuaskan, kehilangan paket protokol UDP akan menjadi lebih serius. TCP akan melakukan pengesahan pengesahan untuk memastikan pihak lain berjaya menerima

  • udp boleh disiarkan kepada semua hos dalam gateway

PHP berbilang -proses

Konsep pelbagai proses

Seperti yang dinyatakan sebelum ini, pelbagai proses digunakan terutamanya untuk membangunkan tahap logik perniagaan dan memproses pelbagai tugas secara selari. Apakah pembangunan tahap logik perniagaan

Kami telah sebutkan di atas, php-fpm Ia adalah pengurus proses fast-cgi Selepas permulaan, berbilang proses cepat-cgi akan dimulakan, menunggu pemprosesan tugas

Di peringkat perisian php-fpm, berbilang cepat-cgi. proses akan Ia tergolong dalam pemprosesan berbilang proses, tetapi apabila pengguna memulakan permintaan dan

diserahkan oleh nginx kepada php-fpm untuk diproses, pada masa ini tahap, setiap permintaan sebenarnya hanya Menduduki proses php fast-cgi untuk memproses logik Proses php yang menjalankan logik perniagaan sebenarnya adalah satu proses.

Begitu juga, Apabila kita menjalankan fail php secara langsung, secara lalai hanya satu proses php dibuka untuk menjalankan kod php

lagi Senario pembangunan proses

Dalam mod web tradisional, php sentiasa menjadi satu proses untuk mengendalikan logik perniagaan Sahaja dalam php- Dalam mod cli, ia digunakan untuk mengendalikan tugas asynchronous Apabila berkhidmat sebagai pelayan rangkaian, pemprosesan berbilang proses adalah mungkin.

Gunakan sambungan pcntl

Proses komunikasi

Komunikasi saluran paip dibahagikan kepada paip bernama, paip tidak bernama, dll. Anda boleh mencari butiran sendiri
  • Komunikasi baris gilir mesej, menggunakan baris gilir mesej linux, dilanjutkan melalui sysvmsg, anda boleh melihat:
  • http://www.php20.cn/article/137
  • Proses komunikasi isyarat, anda boleh lihat:
  • http://www.php20.cn/article/134
  • Komunikasi memori dikongsi memetakan bahagian memori yang boleh diakses oleh proses lain ini dicipta oleh satu proses, tetapi boleh diakses oleh berbilang proses.

  • Memori bersama ialah kaedah IPC terpantas Ia direka khas untuk ketidakcekapan kaedah komunikasi antara proses yang lain.

  • Ia sering digunakan bersama dengan mekanisme komunikasi lain, seperti isyarat, untuk mencapai penyegerakan dan komunikasi antara proses.

  • Komunikasi soket

  • Komunikasi pihak ketiga juga boleh dicapai menggunakan operasi fail, mysql, redis dan kaedah lain

Coroutine

Coroutine bukan proses atau urutan dan proses pelaksanaannya lebih serupa dengan subrutin, atau panggilan fungsi tanpa nilai pulangan.

Sesuatu program boleh mengandungi berbilang coroutine, yang boleh dibandingkan dengan proses yang mengandungi berbilang thread, jadi mari kita bandingkan coroutine dan thread di bawah.

Kami tahu bahawa berbilang rangkaian agak bebas, mempunyai konteksnya sendiri dan penukaran dikawal oleh sistem dan coroutine juga agak bebas,

Terdapat konteksnya sendiri, tetapi penukarannya dikawal dengan sendirinya, dan penukaran daripada coroutine semasa kepada coroutine lain dikawal oleh coroutine semasa.

Coroutine dan proses

Coroutine hanyalah satu siri kod tugasan yang dijalankan dalam proses, tetapi kod tugasan ini boleh dijalankan secara silang tugas pada satu masa Skop coroutine

Oleh kerana coroutine sedang dalam proses Satu rentetan kod tugas, jadi pembolehubah globalnya, pembolehubah statik dan pembolehubah lain semuanya dikongsi, termasuk penimbal global php

Oleh itu, semasa pembangunan, anda perlu membayar perhatian khusus kepada pembolehubah global dalam coroutine , pembolehubah statik, selagi ia diubah suai dalam coroutine tertentu, ia akan menjejaskan semua coroutine Apabila menggunakan fungsi penimbal ob untuk memintas, anda juga mesti mempertimbangkan sama ada ia akan dicemari oleh output coroutine lain.Gunakan kod 2 dalam Jujukan Pelaksanaan Coroutine untuk menerangkan bahawa apabila task1 memberikan nilai 1 kepada $_GET['name'], task2 berbunyi $_GET[' name'] dan ia juga akan menjadi 1, dan task2 Apabila $_GET['name'] diberikan nilai 2, task3 berbunyi $_GET['name'] dan ia juga akan menjadi 2

Saya dalam sambungan coroutine /O

Dalam coroutine, perhatian khusus harus dibayar untuk tidak berkongsi sambungan I/O, jika tidak, data akan menjadi Exception Gunakan kod 2 dalam urutan pelaksanaan coroutine untuk menerangkan Apabila fungsi task1 dan task2 berkongsi mysql sambungan, mereka berdua melakukan pertanyaan Pada masa ini, memandangkan coroutine berjalan secara silang, tugas1 mungkin memperoleh data yang ditanya oleh tugas1 dan tugas2, atau sebahagian daripada data mungkin hilang dan diperolehi oleh tugas2 🎜>

Disebabkan oleh mekanisme lintasan coroutine, sambungan I/O setiap coroutine mestilah bebas, jadi kita perlu membuat sambungan dalam setiap coroutine, tetapi disebabkan oleh bilangan sambungan mysql dan redis yang terhad, Dan sambungan membuka dan menutup memerlukan banyak sumber, jadi kita boleh menggunakan penyelesaian kolam sambungan untuk mencapai sambungan yang dikongsi (selagi hanya satu coroutine digunakan untuk setiap sambungan pada satu masa)

Disyorkan Belajar: tutorial swole

Atas ialah kandungan terperinci Susun mata pengetahuan swole secara terperinci (perkongsian ringkasan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan