


Cara menggunakan RabbitMQ untuk penjadualan tugas dan pengurusan baris gilir dalam PHP
Cara menggunakan RabbitMQ untuk penjadualan tugas dan pengurusan baris gilir dalam PHP
1 Pengenalan
Apabila membangunkan aplikasi web, kita selalunya perlu mengendalikan beberapa tugas yang memakan masa, seperti menghantar e-mel, menjana laporan, memproses sejumlah besar data, dsb. . Jika tugasan ini dilaksanakan secara langsung dalam permintaan web, masa tindak balas mungkin diperlahankan dan pengalaman pengguna mungkin terjejas. Untuk menyelesaikan masalah ini, kami boleh menggunakan baris gilir mesej untuk penjadualan tugas dan pengurusan baris gilir. RabbitMQ ialah sistem baris gilir mesej yang berkuasa yang menyediakan API yang kaya yang boleh digunakan dengan mudah dalam PHP.
2. Pasang RabbitMQ
Pertama, kita perlu memasang RabbitMQ pada pelayan. Anda boleh memasangnya mengikut tutorial pemasangan yang disediakan di laman web rasmi, atau terus menggunakan Docker untuk menjalankan bekas RabbitMQ. Selepas pemasangan selesai, anda boleh melihat status baris gilir dan menguruskan baris gilir dengan mengakses halaman pengurusan RabbitMQ.
3. Gunakan perpustakaan PHP-amqplib untuk mengendalikan
Menggunakan RabbitMQ dalam PHP memerlukan penggunaan perpustakaan pihak ketiga, seperti PHP-amqplib. Perpustakaan ini boleh diperkenalkan melalui Komposer Perintahnya adalah seperti berikut:
composer require php-amqplib/php-amqplib
Selepas pemasangan selesai, masukkan fail perpustakaan ke dalam kod:
use PhpAmqpLibConnectionAMQPStreamConnection; use PhpAmqpLibMessageAMQPMessage;
IV Sambung ke RabbitMQ
Sebelum menggunakan RabbitMQ, anda perlu menyambung ke Pelayan RabbitMQ:
$host = 'localhost'; $port = 5672; $user = 'guest'; $pass = 'guest'; $connection = new AMQPStreamConnection($host, $port, $user, $pass); $channel = $connection->channel();
Digunakan di sini Hos, port, nama pengguna dan kata laluan RabbitMQ lalai Jika terdapat keperluan tersuai, parameter ini boleh diubah suai mengikut situasi sebenar.
5. Hantar mesej ke baris gilir
Dalam penjadualan tugas, kami biasanya menghantar tugas ke baris gilir mesej untuk digunakan oleh Pekerja latar belakang. Mesej boleh dihantar ke baris gilir menggunakan kod berikut:
$message = new AMQPMessage('hello world'); $channel->basic_publish($message, '', 'task_queue');
Di sini kami mencipta contoh AMQPMessage dan menetapkan badan mesej untuk dihantar. Kemudian gunakan kaedah basic_publish untuk menghantar mesej ke baris gilir bernama task_queue.
6. Gunakan mesej dalam baris gilir
Menggunakan mesej dalam baris gilir memerlukan satu atau lebih proses Pekerja di latar belakang untuk diproses. Proses Pekerja akan mendapatkan semula mesej daripada baris gilir dan melaksanakan tugas yang sepadan. Anda boleh menggunakan kod berikut untuk menggunakan mesej dalam baris gilir:
$callback = function ($message) { echo "Received: " . $message->body . " "; usleep(100000); echo "Done "; $message->ack(); }; $channel->basic_consume('task_queue', '', false, false, false, false, $callback); while (count($channel->callbacks)) { $channel->wait(); }
Di sini kami mentakrifkan fungsi tanpa nama $panggilan balik sebagai logik pemprosesan mesej. Dalam fungsi ini, kita boleh melakukan pemprosesan tugas tertentu, dan kemudian memanggil kaedah $message->ack() untuk menunjukkan bahawa tugasan telah selesai. Sebab mengapa kaedah ack dipanggil adalah kerana RabbitMQ tidak tahu sama ada tugasan itu berjaya dilaksanakan secara lalai, jadi kami perlu mengesahkan secara manual hasil pelaksanaan tugas itu.
7 Ketekunan mesej
Dalam contoh di atas, ketekunan mesej dimatikan secara lalai Apabila pelayan RabbitMQ dimulakan semula, mesej akan hilang. Jika kami mahu mesej dipulihkan secara automatik selepas pelayan dimulakan semula, kami perlu melakukan kegigihan mesej. Ia boleh ditetapkan dengan kod berikut:
$channel->queue_declare('task_queue', false, true, false, false);
Tetapkan parameter ketiga kepada benar, yang bermaksud baris gilir ditetapkan sebagai baris gilir berterusan.
8. Tugas tertunda
Kadangkala kita juga perlu melaksanakan tugas tertunda dan melaksanakan tugas selepas masa yang ditetapkan. RabbitMQ sendiri tidak menyokong fungsi melengahkan tugas, tetapi ia boleh dicapai dengan menambah pemalam tambahan. Pemalam yang biasa digunakan ialah rabbitmq_delayed_message_exchange, yang boleh dipasang dengan cara berikut:
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
Selepas pemasangan, semasa menghantar mesej, tetapkan sifat AMQPMessage seperti berikut:
$message->set('application_headers', ['x-delay' => 3000]);
Kod di atas akan dilaksanakan dengan kelewatan sebanyak 3 saat selepas mesej dihantar.
9. Ringkasan
Melalui pengenalan artikel ini, kami telah mempelajari cara menggunakan RabbitMQ untuk penjadualan tugas dan pengurusan baris gilir dalam PHP. Selepas mempraktikkan langkah di atas, kami boleh menggunakan RabbitMQ dengan mudah untuk mengendalikan tugas yang memakan masa dan meningkatkan prestasi dan kebolehpercayaan aplikasi. Pada masa yang sama, ia juga memperkenalkan kegigihan mesej dan kaedah pemprosesan tugas yang tertangguh, membolehkan kami memenuhi keperluan yang berbeza dengan lebih baik. Saya harap artikel ini akan membantu anda menggunakan RabbitMQ dalam projek sebenar.
Bahan rujukan:
- Tapak web rasmi RabbitMQ: https://www.rabbitmq.com/
- Dokumentasi rasmi PHP-amqplib: https://github.com/php-amqplib/php-amqplib
Atas ialah kandungan terperinci Cara menggunakan RabbitMQ untuk penjadualan tugas dan pengurusan baris gilir dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

Dalam Php8, ungkapan perlawanan adalah struktur kawalan baru yang mengembalikan hasil yang berbeza berdasarkan nilai ungkapan. 1) Ia sama dengan pernyataan suis, tetapi mengembalikan nilai dan bukannya blok pernyataan pelaksanaan. 2) Ekspresi perlawanan secara ketat (===), yang meningkatkan keselamatan. 3) Ia mengelakkan kemungkinan ketinggalan dalam penyataan suis dan meningkatkan kesederhanaan dan kebolehbacaan kod.
