PHP dan borang. PHP dan bentuk Input jenis radio mendapat nilai php

Cara mencari dengan betul menggunakan google.com

Semua orang mungkin tahu cara menggunakan enjin carian seperti Google =) Tetapi tidak semua orang tahu bahawa jika anda mengarang pertanyaan carian dengan betul menggunakan pembinaan khas, anda boleh mencapai hasil apa yang anda cari dengan lebih cekap dan cepat =) Dalam artikel ini Saya akan cuba menunjukkannya dan apa yang anda perlu lakukan untuk mencari dengan betul

Google menyokong beberapa pengendali carian lanjutan yang mempunyai makna istimewa apabila mencari di google.com. Lazimnya, penyataan ini mengubah carian, atau malah memberitahu Google untuk melakukan jenis carian yang sama sekali berbeza. Sebagai contoh, reka bentuk pautan: ialah pengendali khas, dan permintaan pautan:www.google.com tidak akan memberikan anda carian biasa, tetapi sebaliknya akan menemui semua halaman web yang mempunyai pautan ke google.com.
jenis permintaan alternatif

cache: Jika anda memasukkan perkataan lain dalam pertanyaan anda, Google akan menyerlahkan perkataan yang disertakan dalam dokumen cache.
Sebagai contoh, cache: www.tapak web akan menunjukkan kandungan cache dengan perkataan "web" diserlahkan.

pautan: Pertanyaan carian di atas akan menunjukkan halaman web yang mengandungi pautan ke pertanyaan yang ditentukan.
Sebagai contoh: pautan:www.site akan memaparkan semua halaman yang mempunyai pautan ke http://www.site

berkaitan: Memaparkan halaman web yang "berkaitan" dengan halaman web yang ditentukan.
Sebagai contoh, berkaitan: www.google.com akan menyenaraikan halaman web yang serupa dengan halaman utama Google.

maklumat: Maklumat Pertanyaan: akan membentangkan beberapa maklumat yang Google ada tentang halaman web yang anda minta.
Sebagai contoh, info:laman web akan menunjukkan maklumat tentang forum kami =) (Armada - Forum Webmaster Dewasa).

Permintaan maklumat lain

takrifkan: Pertanyaan define: akan memberikan definisi perkataan yang anda masukkan selepasnya, dikumpulkan daripada pelbagai sumber dalam talian. Takrifan adalah untuk keseluruhan frasa yang dimasukkan (iaitu, ia akan memasukkan semua perkataan dalam pertanyaan yang tepat).

saham: Jika anda memulakan pertanyaan dengan saham: Google akan memproses selebihnya istilah pertanyaan sebagai simbol saham dan memaut ke halaman yang menunjukkan maklumat sedia untuk simbol ini.
Sebagai contoh, saham:Intel yahoo akan menunjukkan maklumat tentang Intel dan Yahoo. (Perhatikan bahawa anda harus menaip simbol berita terkini, bukan nama syarikat)

Pengubah Suai Pertanyaan

tapak: Jika anda memasukkan tapak: dalam pertanyaan anda, Google akan mengehadkan hasil kepada tapak web yang ditemuinya dalam domain tersebut.
Anda juga boleh mencari mengikut zon individu, seperti ru, org, com, dll ( tapak:com tapak:ru)

allintitle: Jika anda menjalankan pertanyaan dengan allintitle:, Google akan mengehadkan keputusan kepada semua perkataan pertanyaan dalam tajuk.
Sebagai contoh, allintitle: carian google akan mengembalikan semua halaman Google melalui carian seperti imej, Blog, dsb

tajuk: Jika anda memasukkan intitle: dalam pertanyaan anda, Google akan mengehadkan keputusan kepada dokumen yang mengandungi perkataan tersebut dalam tajuk.
Sebagai contoh, intitle:Perniagaan

allinurl: Jika anda menjalankan pertanyaan dengan allinurl: Google akan mengehadkan keputusan kepada semua perkataan pertanyaan dalam URL.
Sebagai contoh, allinurl: carian google akan mengembalikan dokumen dengan google dan mencari dalam tajuk. Selain itu, sebagai pilihan, anda boleh memisahkan perkataan dengan garis miring (/) kemudian perkataan pada kedua-dua belah garis miring akan dicari dalam halaman yang sama: Contoh allinurl: foo/bar

inurl: Jika anda memasukkan inurl: dalam pertanyaan anda, Google akan mengehadkan keputusan kepada dokumen yang mengandungi perkataan tersebut dalam URL.
Sebagai contoh, Inurl: tapak animasi

inteks: hanya mencari perkataan yang ditentukan dalam teks halaman, mengabaikan tajuk dan teks pautan, dan perkara lain yang tidak berkaitan. Terdapat juga terbitan pengubah suai ini - allintext: mereka. selanjutnya, semua perkataan dalam pertanyaan akan dicari hanya dalam teks, yang juga boleh menjadi penting, mengabaikan perkataan yang sering digunakan dalam pautan
Sebagai contoh, intext:forum

julat tarikh: carian dalam rangka masa (julat tarikh:2452389-2452389), tarikh untuk masa ditunjukkan dalam format Julian.

Nah, dan pelbagai contoh pertanyaan yang menarik

Contoh penulisan pertanyaan untuk Google. Untuk spammer

Inurl:control.guest?a=sign

Tapak:books.dreambook.com “URL Halaman Utama” “Tandatangani saya” inurl:tanda

Tapak:www.freegb.net Laman Utama

Inurl:sign.asp “Kiraan Watak”

“Mesej:” inurl:sign.cfm “Penghantar:”

Inurl:register.php “Pendaftaran Pengguna” “Laman Web”

Inurl:edu/buku tetamu “Tandatangani Buku Pelawat”

Inurl:siarkan “Siaran Ulasan” “URL”

Inurl:/archives/ “Ulasan:” “Ingat maklumat?”

“Skrip dan Buku Pelawat Dicipta oleh:” “URL:” “Ulasan:”

Inurl:?action=add “phpBook” “URL”

Tajuk:"Serahkan Cerita Baharu"

Majalah

Inurl:www.livejournal.com/users/ mode=reply

Inurl greatestjournal.com/ mode=reply

Inurl:fastbb.ru/re.pl?

Inurl:fastbb.ru /re.pl? "Buku tetamu"

Blog

Inurl:blogger.com/comment.g?”postID””tanpa nama”

Inurl:typepad.com/ “Siarkan ulasan” “Ingat maklumat peribadi?”

Inurl:greatestjournal.com/community/ “Siarkan ulasan” “alamat poster tanpa nama”

"Siarkan ulasan" "alamat poster tanpa nama" -

Tajuk:"Siarkan ulasan"

Inurl:pirillo.com “Siarkan ulasan”

Forum

Inurl:gate.html?”name=Forums” “mode=reply”

Inurl:”forum/posting.php?mode=reply”

Inurl:"mes.php?"

Inurl:”members.html”

Inurl:forum/memberlist.php?”

Percubaan dengan fob kunci kereta dan penganalisis isyarat baudline sangat menarik (lebih lanjut mengenai perkara ini dalam artikel sebelumnya). Sekarang kami akan cuba melakukan sesuatu yang lebih serius, di mana isyarat keluaran sangat bernilai kepada kami, (isyarat dari fob kunci kereta tidak begitu berharga, kerana selepas penyahkodan kami pada dasarnya mendapat nombor rawak yang besar).

Percubaan dengan fob kunci kereta dan penganalisis isyarat baudline sangat menarik (butiran lanjut tentang perkara ini diterangkan dalam). Sekarang kami akan cuba melakukan sesuatu yang lebih serius, di mana isyarat keluaran sangat bernilai kepada kami, (isyarat dari fob kunci kereta tidak begitu berharga, kerana selepas penyahkodan kami pada dasarnya mendapat nombor rawak yang besar).

Dalam eksperimen ini, pemancar eksperimen beroperasi pada frekuensi 433 MHz pada platform Arduino, yang dengannya anda boleh mencipta objek elektronik interaktif.

Rajah 1: Pemancar eksperimen

Kami tahu bahawa isyarat dihantar pada frekuensi 433 MHz, jadi kami akan menangkap isyarat (menggunakan HackRF) pada frekuensi 435 MHz:

$ hackrf_transfer -r 435MHz-ASK-HACKRF-CW-8M.iq -f 435000000 -s 8000000

Selepas memuatkan hasil HackRF ke dalam penganalisis isyarat Baudline (cara melakukan ini diterangkan dalam artikel sebelumnya), kami mendapat perkara berikut:

Rajah 2: Isyarat dalam penganalisis Baudline

Kami telah menerima isyarat yang boleh diterima dan kini akan memuat naik data ini ke GNU Radio Companion (GRC).

GRC membolehkan anda membuat carta alir menggunakan antara muka grafik. Blok ini kemudiannya disusun menjadi kod python dan boleh digunakan secara bebas daripada GRC. Anda boleh mencapai perkara yang sama dengan menulis kod menggunakan blok GNU Radio, tetapi GRC mengandungi banyak ciri berguna dan lebih mudah untuk digunakan untuk pemula, yang saya turut mengira diri saya. Walau bagaimanapun, cangkerang grafik GRC juga mempunyai kelemahan: kadangkala sukar untuk mencari blok yang betul. Dalam kes ini, cuba cari dengan nama.

Langkah pertama ialah menukar fail log HackRF ke dalam format yang boleh dibaca oleh GNU Radio. Log HackRF ialah data yang merupakan pasangan IQ, yang disimpan sebagai integer tidak bertanda 8-bit (anda boleh membaca lebih lanjut mengenai persampelan IQ atau kuadratur). Komponen GNU Radio biasanya memerlukan data IQ yang kompleks, dan oleh itu kami mesti menukar fail kami kepada format ini (algoritma ditunjukkan dalam rajah di bawah):

Rajah 3: Carta alir algoritma untuk menukar isyarat kepada format untuk GNU Radio

Pertama, gambarajah blok menggunakan komponen "Sumber Fail" standard untuk memuatkan fail. Blok "UChar to Float" kemudian menukar integer 8-bit yang tidak ditandatangani kepada nombor titik terapung. Dalam blok "Deinterleave", aliran data umum (IQIQIQ) dibahagikan kepada dua saluran berasingan (I dan Q), selepas itu ia digabungkan semula, tetapi dalam format nombor kompleks (untuk ini, "Float to Complex ” blok digunakan). Format ini adalah apa yang digunakan dalam GNU Radio.

Selepas melalui blok "Tambah Const", data berpusat di sekitar 0 (memandangkan HackRF menggunakan integer tidak bertanda dalam julat 0 hingga 256, data berpusat di sekitar 127). (Saya terpaksa memberitahu Mike Ossman tentang perkara ini - satu lagi sebab yang sangat baik untuk mendaftar untuk HackRF di Kickstarter - jika matlamat yang lebih bercita-cita tinggi ditetapkan, kami akan mendapat kursus video di GNU Radio)

Blok "Throttle" yang terakhir digunakan untuk memampatkan frekuensi pensampelan kepada 8 MHz supaya sistem yang menggunakan isyarat ini akan berfungsi dengan betul. Secara umum, saya mendapati bahawa adalah masuk akal untuk memampatkan kadar pensampelan isyarat kerana jika tidak, mungkin terdapat interaksi rawak antara kadar pensampelan dan lebar spektrum isyarat (dalam kes data IQ, kadar pensampelan dan lebar spektrum isyarat adalah berkorelasi ).

Pada peringkat mampatan, pembolehubah throttle_rate digunakan (blok paling atas litar), yang membolehkan anda menetapkan frekuensi untuk pelbagai isyarat. Satu kejutan menanti kami di sini: GRC tidak menunjukkan nombor dalam format yang sebenarnya digunakan! GRC menerima nombor sama ada dalam format biasa atau saintifik (heksadesimal, perlapanan, atau apa sahaja yang disokong Python), tetapi memaparkan nombor tersebut dalam format yang boleh dibaca manusia (nombor tidak boleh ditentukan dalam format ini). Dalam kes kami, nilai yang boleh diterima ialah 8000000 atau 8e6, bagaimanapun, nombor 8M tidak boleh diterima.

Sekarang kami telah memuat turun fail dalam format yang diperlukan. Apa yang akan datang?

Langkah pertama ialah mengkaji isyarat kami dengan lebih terperinci. Kami boleh serta-merta selepas memampatkan isyarat menghantarnya ke blok dengan transformasi Fourier yang pantas:

Rajah 4: Parameter blok Fast Fourier Transform

Pada output penukar kita mendapat isyarat berikut:

Rajah 5: Isyarat selepas penukar

Dalam rajah di atas kita melihat puncak pada frekuensi tangkapan (435 MHz) dan sebahagian daripada isyarat yang dihantar sekitar frekuensi 433.8 MHz.

Sekarang mari kita lihat tetapan penukar. Secara lalai, GNU Radio tidak mengetahui apa-apa tentang frekuensi pembawa (jika ia tidak dinyatakan, ia diandaikan sebagai sifar). Dalam kes ini, isyarat itu sendiri akan berada pada frekuensi -1.2 MHz. Ini, sudah tentu, tidak sesuai dengan saya, dan saya akan menetapkan nilai sebenar:

Rajah 6: Parameter Penukar FFT

Parameter "Kadar Sampel" dan "Freq Jalur Asas" sepadan dengan pembolehubah "kadar_sampel" dan "freq_tangkap". Parameter "Kadar Sampel" mesti sepadan dengan isyarat input (dalam kes kami ialah 8 MHz; nilai yang kami mampatkan sampel). Jika tidak, penukar tidak akan berfungsi dengan betul.

Dalam GRC kami menggunakan blok yang sesuai dengan pembolehubah:

Rajah 7: Blok dengan pembolehubah

Memandangkan kita tahu di mana isyarat kita, tangkapan dilakukan pada frekuensi offset 435 MHz untuk mengelakkan puncak pada frekuensi operasi. Di samping itu, kami menangkap lebih banyak data daripada yang kami perlukan (berbanding dengan lebar spektrum). Untuk menyelesaikan kedua-dua masalah ini dalam satu masa, kami akan menggunakan blok Penapis FIR XLating Frekuensi.

Rajah 8: Menggunakan penapis FIR perantaraan

Menggunakan penapis sedemikian membolehkan anda menyelesaikan tiga masalah secara serentak:

  1. Alihkan frekuensi pembawa isyarat. Kami nampaknya "menatal ke bawah" ke bahagian isyarat yang dikehendaki.
  2. Gunakan penapis laluan jalur untuk mengalih keluar bahagian isyarat yang tidak kita perlukan. Selanjutnya, apabila kami menjalankan pengukuran, kami hanya akan mengukur isyarat kami tanpa bunyi radio.
  3. Pisahkan isyarat. Ini akan mengurangkan lebar spektrum dan bilangan sampel isyarat, yang akan mengurangkan kuasa pemprosesan. Memandangkan kadar persampelan menurun, kita mesti mengambil kira perkara ini apabila mengkonfigurasi blok berikutnya.

Rajah 9: Parameter penapis FIR pertengahan

Di sini kita sekali lagi menggunakan pembolehubah untuk menetapkan parameter pereputan (atau pembahagian), kerana kaedah ini lebih mudah. Untuk mendapatkan nilai penyusutan, kita perlu membahagikan kadar sampel input dengan nilai outputnya (dalam kes kita, nilai output ialah 50 kHz, nilai yang agak sewenang-wenangnya). 50 kHz cukup lebar untuk menampung keseluruhan isyarat kami dan kami tidak akan menghadapi sebarang masalah nanti kerana isyaratnya sangat kuat. Dalam kehidupan sebenar kita mungkin perlu menggunakan nilai yang jauh lebih rendah. Kita mesti menukar hasilnya kepada integer untuk GRC berfungsi dengan betul (kami menggunakan fungsi Python int untuk ini).

Kami mengikat pembolehubah firdes_tap pada parameter "Ketik" (lebih lanjut mengenai perkara ini kemudian). Pilihan ini membolehkan kami mengasingkan isyarat kami.

Dan akhirnya, dengan parameter "Kekerapan Pusat" kami menetapkan offset frekuensi pembawa (sekali lagi menggunakan pembolehubah). Kami perlu mengalihkan isyarat kami ke bawah, jadi offset adalah lebih kurang 1.2 MHz (atau 435 MHz - 433 MHz). Oleh kerana anjakan adalah ke bawah, nilainya mestilah negatif.

Saya menggunakan GNU Radio 3.6. Walau bagaimanapun, versi terkini ialah 3.7, yang mempunyai beberapa perubahan. Khususnya, parameter "Kekerapan Pusat" dianggap sebagai frekuensi pembawa "sebenar". Jika anda menggunakan GNU Radio 3.7, keluarkan tanda negatif. Ini dan perubahan lain dalam versi baharu boleh ditemui.

[Kemas kini 9 Februari 2013 - Selepas kemas kini GNU Radio, saya tidak jelas apa perubahannya, kerana offset negatif berfungsi dengan baik, tetapi offset positif tidak.]

Rajah 10: Nilai pembolehubah firdes_tap

Pembolehubah firdes_tap mentakrifkan penapis laluan rendah kami. Parameter utama di sini ialah:

  1. Keuntungan = 1 - kami tidak menguatkan isyarat.
  2. Kadar pensampelan (kadar_sampel) – sepadan dengan kadar pensampelan isyarat input (dalam kes kami, 8 MHz).
  3. Kekerapan Cutoff = 2000 – Kami mentakrifkan kekerapan cutoff sebagai 2 KHz.
  4. Kekerapan Jalur Peralihan Penapis = 20000 – Menetapkan lebar jalur peralihan penapis kepada kira-kira separuh daripada kekerapan pensampelan (dalam kes kami, kekerapan pensampelan akhir ialah 50 kHz, oleh itu kekerapan peralihan adalah kira-kira 20 kHz).

Pilihan WIN_HAMMING dan 6.76 memberitahu GNU Radio untuk menggunakan penapis tetingkap. Anda boleh mengabaikan parameter ini.

Selepas menghantar isyarat melalui penapis, penghapusan dan pemusatan semula, kami sekali lagi menghantar isyarat melalui transformasi Fourier. Outputnya adalah seperti berikut:

Rajah 11: Isyarat melalui penapis dan penukar

Sila ambil perhatian bahawa lebar spektrum isyarat telah berkurangan, dan pelicinan juga telah berlaku di luar wilayah yang sedang kami pertimbangkan.

Dengan menetapkan nilai yang berbeza untuk penapis laluan rendah, anda boleh mendapatkan hasil yang berbeza (anda boleh membaca lebih lanjut tentang menyediakan penapis laluan rendah).

Jangan lupa untuk mengkonfigurasi transformasi Fourier:

Rajah 12: Tetapan pemancar

Perhatian khusus harus diberikan kepada perubahan dalam frekuensi pensampelan isyarat kami (sehingga 50 kHz) dan frekuensi pembawa. Oleh itu, kami menetapkan pembolehubah yang sesuai dalam parameter "Kadar Sampel" dan "Kekerapan Jalur Asas".

Kami kini mempunyai isyarat termodulat amplitud jalur sempit yang ditapis, berpusat dan. Apa yang boleh kita lakukan mengenai perkara ini?

Dengan modulasi amplitud, terdapat perubahan dalam amplitud, dan kita boleh mengesan isyarat sedemikian dengan mengukur parameter ini:

Rajah 13: Litar pengukuran isyarat

Blok "Complex to Mag" menukar isyarat IQ kompleks kepada nilai mutlak. Oleh kerana isyarat kami sangat kuat dan juga melalui penapis, kami boleh menggunakan pengiraan amplitud. Jika isyarat tidak ditapis dan bunyi bising, kami tidak akan dapat menggunakan kaedah yang begitu mudah.

Perhatikan warna pin "Out" blok "Complex to Mag" (oren dan bukannya biru). Ini bermakna isyarat keluaran ialah nilai titik terapung dan oleh itu blok input mesti menerima isyarat jenis ini.

Rajah 14: Menetapkan jenis isyarat yang diterima

Kami boleh menetapkan jenis isyarat dalam menu lungsur pilihan "Jenis".

Sekarang apabila GRC bermula, output ialah magnitud yang dikira. Jika kita menatal julat masa menggunakan roda tetikus, kita akan melihat gambar berikut:

Rajah 15: Perwakilan grafik bagi magnitud isyarat yang dikira

Isyarat dalam rajah di atas kelihatan hebat, begitu juga isyarat yang diperoleh apabila dilihat dalam penganalisis Baudline. Dalam kes kedua, kami terpaksa mengasingkan dan mengasingkan isyarat berguna dan menukarnya kepada urutan magnitud yang dikira.

Rajah 16: Perbandingan dua isyarat

Anda boleh memuat turun fail data sampel dari sini dan fail GRC dari sini.

Dalam artikel seterusnya kami akan cuba menukar isyarat daripada GRC kembali kepada sampel asal.

Terima kasih kepada Mike Ossman, semua orang dari saluran #hackrf di Freenode, dan secara umum semua orang yang membantu menulis artikel ini dan memberikan komen.

24.6K

Bukan rahsia lagi bahawa cara paling biasa halaman HTML berinteraksi dengan tapak web ialah borang. Borang (iaitu, elemen HTML yang dibentuk oleh teg borang) juga digunakan oleh perkhidmatan e-mel percuma, kedai elektronik dan banyak jenis tapak lain.

Memproses borang mudah menggunakan PHP adalah mudah. Walau bagaimanapun, dari semasa ke semasa terdapat keperluan untuk memproses borang yang mengandungi beberapa medan jenis yang sama, walaupun pada hakikatnya bilangannya boleh berbeza-beza dalam julat yang luas dan bilangannya tidak diketahui terlebih dahulu. Untuk kes sedemikian, PHP menyediakan medan pemprosesan jenis yang sama dengan tatasusunan nilai.


Mari kita lihat lebih dekat pilihan untuk pelbagai jenis medan.

Medan teks

Dalam artikel ini, medan teks merujuk kepada elemen yang dicipta oleh teg input dengan nilai parameter jenis teks dan teg textarea. Ia adalah paling mudah untuk mengatur pemprosesan borang yang terdiri daripada beberapa medan tersebut. Penyenaraian di bawah menunjukkan penanda HTML untuk borang sedemikian.






Seperti yang anda boleh lihat daripada penyenaraian, nama untuk elemen bentuk, dari sudut PHP, adalah elemen tatasusunan. Oleh itu, skrip PHP yang akan memproses borang ini akan merawat semua banyak medan teks borang ini sebagai tatasusunan tunggal. Elemen individu boleh diakses dengan indeks atau dikira menggunakan senarai dan setiap arahan, seperti dalam contoh berikut.

n"; ?>

Suis

Dalam artikel ini, kotak pilihan ialah elemen yang dibuat dalam teg input dengan parameter jenis ditetapkan ke kotak pilihan . Borang untuk menggunakan bilangan pembolehubah "suis" dibina dengan cara yang sama. Ambil perhatian bahawa pilihan nilai butang radio tertentu (iaitu, nilai sifat nilai) adalah tidak penting. Satu contoh ditunjukkan dalam penyenaraian di bawah:






Walau bagaimanapun, pemprosesan borang sedemikian berbeza daripada pemprosesan yang diterangkan untuk medan teks. Dalam kes ini, adalah perlu untuk menentukan sama ada pelawat tapak telah menghidupkan suis ini atau suis itu. Jika didayakan, maka elemen tatasusunan yang sepadan wujud; jika tidak, maka ia tiada. Penyenaraian berikut ialah contoh skrip PHP yang mencetak butang radio yang didayakan:

Butang radio

Sebelum menerangkan pemprosesan butang radio, perlu diingat bagaimana ia berfungsi. Intipati butang radio (elemen yang dicipta oleh tag input dengan nilai parameter jenis sama dengan radio ) ialah dengan memilih satu butang, pengguna secara automatik menyahpilih butang lain daripada set yang sama. Butang digabungkan menjadi satu set dengan sangat mudah: semua butang dalam set mempunyai nama yang sama.

Tetapi nilai (iaitu, parameter nilai) butang dalam set adalah berbeza. Dan nilai butang yang dipilih dengan nama set akan dihantar ke tapak. Sama seperti medan teks dan butang radio, nama set butang radio hendaklah diformatkan sebagai nama elemen tatasusunan dalam PHP. Contoh borang sedemikian diberikan dalam penyenaraian berikut:

// set pertama butang
// set kedua butang
// set ketiga butang

Memproses butang radio menggabungkan idea menggunakan kedua-dua medan teks dan butang radio dalam pemprosesan. Jika pengarang halaman html tidak menetapkan nilai lalai, dan pengguna tidak memilih butang tertentu dalam set butang radio, maka elemen ini tidak akan berada dalam tatasusunan (seperti untuk butang radio).

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_receive — Mendapatkan semula mesej daripada baris gilir mesej

Penerangan

Bool msg_receive (sumber $queue , int $desiredmsgtype , int &$msgtype , int $maxsize , bercampur-campur&$mesej [, bool $unsiri = BENAR [, int $flags = 0 [, int &$errorcode ]]])

msg_receive() menerima mesej pertama daripada baris gilir mesej yang ditentukan oleh parameter baris gilir dengan jenis yang dinyatakan dalam desiredmsgtype .

Senarai parameter

Desiredmsgtype

Jika desiredmsgtype ialah 0, mesej pertama dalam baris gilir dikembalikan. Jika desiredmsgtype lebih besar daripada 0, maka mesej pertama dengan jenis yang ditentukan dikembalikan. Jika desiredmsgtype kurang daripada 0, maka mesej pertama dengan jenis kurang daripada atau sama dengan modulo yang dinyatakan dalam desiredmsgtype dikembalikan. Jika tiada mesej yang sepadan dengan kriteria, skrip anda menunggu sehingga ia muncul dalam baris gilir. Anda boleh menukar tingkah laku ini dengan menentukan MSG_IPC_NOWAIT dalam parameter bendera.

Msgtype

Parameter ini menyimpan jenis mesej yang diterima.

Saiz maksimum

Saiz maksimum mesej yang diterima ditetapkan dalam saiz maksimum ; jika mesej dalam baris gilir lebih besar daripada saiz ini, fungsi itu gagal (melainkan anda menetapkan bendera seperti yang diterangkan di bawah).

Mesej

Mesej yang diterima disimpan dalam mesej jika tiada ralat semasa menerima.

Nyahsiri

Jika ditetapkan kepada BENAR, mesej dianggap sebagai bersiri menggunakan mekanisme yang sama seperti dalam modul sesi. Mesej itu dinyahsiri dan kemudian dikembalikan kepada skrip anda. Ini membolehkan anda mendapatkan semula tatasusunan dan objek kompleks dengan mudah daripada skrip PHP lain, atau, jika anda menggunakan penyeri bersiri WDDX, daripada mana-mana sumber yang serasi dengan WDDX.

Jika unsirialisasi dinyatakan SALAH, mesej dikembalikan sebagai rentetan selamat binari.

Parameter bendera pilihan membolehkan anda menghantar bendera ke panggilan sistem msgrcv peringkat rendah. Nilai lalai ialah 0, tetapi anda boleh menentukan satu atau lebih daripada nilai berikut (dengan menambahkannya atau melakukan operasi OR binari).

kod salah

Jika fungsi gagal, parameter kod ralat pilihan akan mengandungi nilai pembolehubah sistem errno.

Kembalikan nilai

Pulangan BENAR apabila berjaya disiapkan atau SALAH sekiranya berlaku kesilapan.

Apabila berjaya disiapkan, struktur data baris gilir mesej dikemas kini seperti berikut: msg_lrpid mengandungi ID proses panggilan, msg_qnum berkurangan sebanyak 1 dan msg_rtime ditetapkan mengikut masa semasa.

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_receive — Terima mesej daripada baris gilir mesej

Penerangan

msg_receive (sumber $queue , int $desiredmsgtype , int &$msgtype , int $maxsize , bercampur-campur&$mesej [, bool $unsiri = BENAR [, int $flags = 0 [, int &$errorcode]]]): bool

msg_receive() akan menerima mesej pertama daripada baris gilir yang ditentukan jenis yang ditentukan oleh desiredmsgtype .

Parameter

Pemegang sumber baris gilir mesej

Desiredmsgtype

Jika jenismsg yang dikehendaki ialah 0, mesej dari hadapan baris gilir dikembalikan. Jika desiredmsgtype lebih besar daripada 0, maka mesej pertama jenis itu dikembalikan. Jika desiredmsgtype kurang daripada 0, mesej pertama pada baris gilir dengan jenis kurang daripada atau sama dengan nilai mutlak desiredmsgtype akan dibaca. Jika tiada mesej yang sepadan dengan kriteria, skrip anda akan menunggu sehingga mesej yang sesuai tiba pada baris gilir. Anda boleh menghalang skrip daripada menyekat dengan menentukan MSG_IPC_NOWAIT dalam parameter bendera.

Msgtype

Jenis mesej yang diterima akan disimpan dalam parameter ini.

Saiz maksimum

Saiz maksimum mesej yang akan diterima ditentukan oleh saiz maksimum ; jika mesej dalam baris gilir lebih besar daripada saiz ini fungsi akan gagal (melainkan anda menetapkan bendera seperti yang diterangkan di bawah).

Mesej

Mesej yang diterima akan disimpan dalam mesej , melainkan terdapat ralat menerima mesej.

Nyahsiri

Jika ditetapkan kepada BENAR, mesej itu dianggap seolah-olah ia telah bersiri menggunakan mekanisme yang sama seperti modul sesi. Mesej itu akan dinyahsiri dan kemudian dikembalikan ke skrip anda. Ini membolehkan anda menerima tatasusunan atau struktur objek kompleks dengan mudah daripada skrip PHP lain, atau jika anda menggunakan penyeri WDDX, daripada mana-mana sumber yang serasi dengan WDDX.

Jika unserialize adalah SALAH, mesej akan dikembalikan sebagai rentetan selamat binari.

Bendera pilihan membolehkan anda menghantar bendera ke panggilan sistem msgrcv peringkat rendah. Ia lalai kepada 0, tetapi anda boleh menentukan satu atau lebih nilai berikut (dengan menambah atau ATAU mereka bersama-sama).

Benderakan nilai untuk msg_receive
MSG_IPC_NOWAIT Jika tiada mesej jenismsg yang dikehendaki, kembali dengan segera dan jangan tunggu. Fungsi ini akan gagal dan mengembalikan nilai integer yang sepadan dengannya MSG_ENOMSG.
MSG_EXCEPT Menggunakan bendera ini dalam kombinasi dengan jenismsg yang dikehendaki lebih besar daripada 0 akan menyebabkan fungsi menerima mesej pertama yang tidak sama dengan jenismsg yang dikehendaki.
MSG_NOERROR Jika mesej lebih panjang daripada maxsize , menetapkan bendera ini akan memotong mesej kepada maxsize dan tidak akan menandakan ralat.
kod salah

Jika fungsi gagal, kod ralat pilihan akan ditetapkan kepada nilai pembolehubah errno sistem.

Nilai Pulangan

Pulangan BENAR pada kejayaan atau SALAH atas kegagalan.

Setelah berjaya selesai, struktur data baris gilir mesej dikemas kini seperti berikut: msg_lrpid ditetapkan kepada proses-ID proses panggilan, msg_qnum dikurangkan dengan 1 dan msg_rtime ditetapkan kepada masa semasa.