Rumah  >  Artikel  >  rangka kerja php  >  Mengapa laravel menggunakan baris gilir

Mengapa laravel menggunakan baris gilir

WBOY
WBOYasal
2022-03-14 16:45:242770semak imbas

Dalam laravel, menggunakan baris gilir boleh menyelesaikan masalah seperti konkurensi besar dan antara muka komunikasi berbilang bahasa. Tugas atau tugas yang memakan masa yang tidak boleh diselaraskan dalam jumlah yang banyak pada masa yang sama boleh dirangkumkan dan dipindahkan ke baris gilir mesej Pengendali akan terus mengeluarkan mesej daripada baris gilir mesej dan memprosesnya Dengan cara ini, menggunakan baris gilir mesej menghapuskan keperluan untuk konkurensi berskala besar.

Mengapa laravel menggunakan baris gilir

Persekitaran pengendalian artikel ini: sistem Windows 10, Laravel versi 6, komputer Dell G3.

Mengapa laravel menggunakan baris gilir

Baris gilir mesej ialah modul penting untuk projek Web berskala besar Melalui baris gilir mesej, masalah seperti konkurensi yang besar dan antara muka komunikasi berbilang bahasa boleh diselesaikan.

Untuk masalah konkurensi yang besar, tugasan yang memakan masa atau tugasan yang tidak boleh diselaraskan dalam jumlah yang banyak pada masa yang sama boleh dirangkumkan dan dipindahkan ke baris gilir mesej Pengendali akan terus mengeluarkan mesej daripada baris gilir dan proses mesej Dengan cara ini, melalui mesej Penimbalan barisan boleh menghalang sekatan dalam situasi serentak yang besar Jika prestasi tidak mencukupi, pelbagai tugas pemprosesan boleh ditambah untuk mendapatkan mesej daripada baris gilir mesej.

Sebagai contoh, dalam operasi pangkalan data, apabila terdapat terlalu banyak operasi baca dan tulis pada pangkalan data, akan berlaku masalah seperti mengunci jadual Masalah baca boleh diselesaikan melalui caching dan penyelesaian lain, manakala tulis masalah perlu diselesaikan dengan baris gilir mesej.

Selain itu, dalam pembangunan projek Web berskala besar, dalam banyak kes adalah mustahil untuk melaksanakannya melalui satu bahasa Ia adalah perlu untuk memanfaatkan bahasa yang berbeza, seperti PHP, walaupun dalam erti kata teori ia boleh melakukan segala-galanya dalam pembangunan Web, tetapi kecekapan menggunakannya untuk menyelesaikan beberapa masalah akan menjadi sangat rendah, seperti sambungan soket masa nyata dan pemprosesan transaksi yang diedarkan.

Gunakan baris gilir mesej Laravel untuk memproses tugas tak segerak, Redis sebagai pangkalan data baris gilir, Skrip pemantauan penyelia gangguan tidak normal dan mula semula automatik, ini adalah proses standard Laravel untuk memproses tugas baris gilir, tetapi dalam praktiknya mungkin terdapat pelbagai Untuk memastikan kebolehpercayaan sistem, beberapa isu perlu diberi perhatian.

1. Menetapkan bilangan percubaan semula untuk pelaksanaan yang gagal

Pastikan untuk menetapkan bilangan percubaan semula untuk pelaksanaan tugas yang gagal untuk mengelakkan percubaan semula yang tidak terhingga percubaan semula melebihi, Laravel akan menulis secara lalai Dalam jadual tugas yang gagal, anda juga boleh menulis logik pemprosesan susulan kegagalan pelaksanaan anda sendiri.

php artisan queue:work redis --tries=3

Anda perlu melaksanakan arahan berikut terlebih dahulu untuk mencipta jadual data:

php artisan queue:failed-table

php artisan migrate

2. Mengendalikan pengecualian program

Kadangkala pengecualian mungkin berlaku semasa pelaksanaan program, seperti bergantung pada antara muka lain, meminta HTTP tamat masa antara muka, dsb. Jika Jika pengecualian tidak ditangkap, baris gilir semasa akan terganggu dan tidak boleh terus dijalankan.

Pengecualian di sini merujuk kepada pengecualian yang berlaku semasa pelaksanaan program Ini tidak bermakna proses pemastautin menutup panggilan tidak semestinya menyebabkan proses pemastautin terganggu dipantau dan dimulakan semula oleh Penyelia.

Contohnya, coretan kod untuk menangkap pengecualian:

try {undefined
$r = $client->request('POST', '', [
'query' => [
'client_name' => 'filemail',
'client_version' => '1.0',
'client_sequence' => 0,
'uid' => 692934013,//119481237
'r' => 1508312484,
],
'body' => \GuzzleHttp\json_encode($body),
]);
$result = $r->getBody()->getContents();
$result = json_decode($result, true);
if ($result['result'] == 0) {undefined
info("sendMail fail:" . json_encode($result));
$this->pushLog($task['id'], $task['mail_id'], implode(',', $userIds), json_encode($result), 0);
} else {undefined
Log::warning("sendMail fail:" . json_encode($result));
$this->pushLog($task['id'], $task['mail_id'], implode(',', $userIds), json_encode($result), $result['result']);
}
} catch (RequestException $e) {undefined
Log::warning('RequestException' . $e->getMessage());
} catch (Exception $e) {undefined
Log::emergency('Exception' . $e->getMessage());
}

[Cadangan berkaitan: tutorial video laravel]

Atas ialah kandungan terperinci Mengapa laravel menggunakan baris gilir. 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
Artikel sebelumnya:Apakah inti laravelArtikel seterusnya:Apakah inti laravel