


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

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

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

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

Kunci untuk menulis komen yang baik adalah untuk menjelaskan "mengapa" daripada hanya "apa yang dilakukan" untuk meningkatkan kebolehbacaan kod. 1. Komen harus menjelaskan sebab -sebab logik, seperti pertimbangan di sebalik pemilihan nilai atau pemprosesan; 2. Gunakan anotasi perenggan untuk logik kompleks untuk meringkaskan idea keseluruhan fungsi atau algoritma; 3. Secara kerap mengekalkan komen untuk memastikan konsistensi dengan kod, elakkan mengelirukan, dan padamkan kandungan ketinggalan zaman jika perlu; 4. Secara serentak periksa komen semasa mengkaji semula kod, dan merekodkan logik awam melalui dokumen untuk mengurangkan beban komen kod.

Komen tidak boleh cuai kerana mereka ingin menjelaskan sebab-sebab kewujudan kod dan bukannya fungsi, seperti keserasian dengan antara muka lama atau sekatan pihak ketiga, jika tidak, orang yang membaca kod itu hanya boleh bergantung pada meneka. Bidang yang mesti dikomentari termasuk penghakiman bersyarat kompleks, logik pengendalian kesilapan khas, dan sekatan pintasan sementara. Cara yang lebih praktikal untuk menulis komen ialah memilih komen tunggal atau menyekat komen berdasarkan tempat kejadian. Gunakan komen blok dokumen untuk menerangkan parameter dan pulangan nilai pada permulaan fungsi, kelas, dan fail, dan simpan komen dikemas kini. Untuk logik yang kompleks, anda boleh menambah garis kepada yang sebelumnya untuk meringkaskan niat keseluruhan. Pada masa yang sama, jangan gunakan komen untuk menutup kod, tetapi gunakan alat kawalan versi.

Phpblockcommentsareusfulfritingmulti-lineexplanations, temporarilydisablingcode, andgeneratingdocumentation.theyshouldnotbenestedorleftunclosed.blockcommentshelpindocumentingfunctionswithphpdoc, whoToolslikePhpePhipeForauseForaSeforausforausforna

Langkah pertama ialah memilih pakej persekitaran bersepadu XAMPP atau MAMP untuk membina pelayan tempatan; Langkah kedua ialah memilih versi PHP yang sesuai mengikut keperluan projek dan mengkonfigurasi pelbagai versi pertukaran; Langkah ketiga ialah memilih VSCode atau PHPStorm sebagai editor dan debug dengan XDebug; Di samping itu, anda perlu memasang komposer, php_codesniffer, phpunit dan alat lain untuk membantu dalam pembangunan.
