cari
Rumahpembangunan bahagian belakangtutorial phpCara 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:

  1. Tapak web rasmi RabbitMQ: https://www.rabbitmq.com/
  2. 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!

Kenyataan
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
Apakah bentuk penuh PHP?Apakah bentuk penuh PHP?Apr 28, 2025 pm 04:58 PM

Artikel ini membincangkan PHP, memperincikan bentuk penuhnya, kegunaan utama dalam pembangunan web, perbandingan dengan Python dan Java, dan kemudahan pembelajarannya untuk pemula.

Adakah PHP adalah bahasa sensitif kes?Adakah PHP adalah bahasa sensitif kes?Apr 28, 2025 pm 04:55 PM

Kepekaan kes PHP berbeza -beza: Fungsi tidak sensitif, manakala pembolehubah dan kelas sensitif. Amalan terbaik termasuk penamaan yang konsisten dan menggunakan fungsi kes-insensitif untuk perbandingan.

Bagaimana anda mengalihkan halaman di PHP?Bagaimana anda mengalihkan halaman di PHP?Apr 28, 2025 pm 04:54 PM

Artikel ini membincangkan pelbagai kaedah untuk pengalihan halaman dalam PHP, yang memberi tumpuan kepada fungsi header () dan menangani isu -isu biasa seperti "tajuk telah menghantar" kesilapan.

Apakah PDO dalam PHP?Apakah PDO dalam PHP?Apr 28, 2025 pm 04:51 PM

Artikel ini membincangkan objek data PHP (PDO), lanjutan untuk akses pangkalan data dalam PHP. Ia menyoroti peranan PDO dalam meningkatkan keselamatan melalui kenyataan yang disediakan dan faedahnya terhadap MySQLI, termasuk abstraksi pangkalan data dan pengendalian ralat yang lebih baik.

Apakah Memcache dan Memcached dalam PHP? Adakah mungkin untuk berkongsi satu contoh memcache antara beberapa projek PHP?Apakah Memcache dan Memcached dalam PHP? Adakah mungkin untuk berkongsi satu contoh memcache antara beberapa projek PHP?Apr 28, 2025 pm 04:47 PM

Memcache dan Memcached adalah sistem caching PHP yang mempercepat aplikasi web dengan mengurangkan beban pangkalan data. Satu contoh boleh dikongsi di kalangan projek dengan pengurusan kunci yang teliti.

Apakah langkah -langkah untuk membuat pangkalan data baru menggunakan MySQL dan PHP?Apakah langkah -langkah untuk membuat pangkalan data baru menggunakan MySQL dan PHP?Apr 28, 2025 pm 04:44 PM

Artikel membincangkan langkah -langkah untuk membuat dan mengurus pangkalan data MySQL menggunakan PHP, memberi tumpuan kepada sambungan, penciptaan, kesilapan umum, dan langkah -langkah keselamatan.

Adakah JavaScript berinteraksi dengan PHP?Adakah JavaScript berinteraksi dengan PHP?Apr 28, 2025 pm 04:43 PM

Artikel ini membincangkan bagaimana JavaScript dan PHP berinteraksi secara tidak langsung melalui permintaan HTTP kerana persekitaran yang berbeza. Ia merangkumi kaedah untuk menghantar data dari JavaScript ke PHP dan menyoroti pertimbangan keselamatan seperti pengesahan data dan prot

Bagaimana cara melaksanakan skrip PHP dari baris arahan?Bagaimana cara melaksanakan skrip PHP dari baris arahan?Apr 28, 2025 pm 04:41 PM

Artikel ini membincangkan skrip PHP dari baris arahan, termasuk langkah -langkah, pilihan umum, kesilapan penyelesaian masalah, dan pertimbangan keselamatan.

See all articles

Alat AI Hot

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.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular