Rumah >pembangunan bahagian belakang >tutorial php >PHP ialah Bahasa Berbenang Tunggal, Jadi Bagaimana Laravel Mengendalikan Pekerjaan Beratur Secara Asynchronous?
PHP dikenali sebagai bahasa satu utas, bermakna ia hanya boleh melaksanakan satu tugas pada satu masa dalam satu proses. Walau bagaimanapun, Laravel menyediakan sistem baris gilir yang teguh untuk mengendalikan berbilang tugas "secara tidak segerak." Jika PHP adalah satu benang, bagaimanakah Laravel mencapai keajaiban ini? Mari kita pecahkan secara ringkas.
Sebelum menyelam ke dalam baris gilir, kita perlu memahami apa itu proses PHP.
Proses adalah seperti pekerja yang diupah untuk menyelesaikan tugas. Apabila anda melaksanakan skrip PHP (cth., php my_script.php), sistem pengendalian mencipta proses baharu. Proses ini:
echo "Hello World!";
Apabila anda menjalankan skrip ini, PHP memulakan proses, memaparkan “Hello World!”, dan kemudian proses itu tamat.
Dalam aplikasi web:
PHP adalah satu benang, bermaksud:
echo "Task 1"; // Waits for Task 1 to finish before starting Task 2 echo "Task 2";
PHP melaksanakan Tugasan 1 dahulu. Hanya selepas ia selesai, ia beralih ke Tugasan 2. Tingkah laku ini berbeza daripada bahasa seperti JavaScript, yang mana tugas boleh dijalankan selari dalam proses yang sama.
Sistem baris gilir Laravel membolehkan anda menjalankan berbilang tugas di latar belakang tanpa menyekat aplikasi utama. Contohnya:
Tetapi PHP hanya boleh mengendalikan satu tugas pada satu masa, bukan? Bagaimanakah Laravel menjadikannya kelihatan tidak segerak? Jawapannya terletak pada pekerja dan pelbagai proses.
Seorang pekerja di Laravel ialah proses PHP yang berjalan lama yang mendengar kerja dalam baris gilir dan melaksanakannya.
Apabila anda menjalankan arahan:
php artisan queue:work
Proses PHP baharu (atau pekerja) bermula. Proses ini:
Laravel mencapai gelagat "tak segerak" dengan menjalankan berbilang pekerja pada masa yang sama. Setiap pekerja adalah proses PHP yang berasingan.
Begini cara ia berfungsi:
Apabila anda menjalankan php artisan queue:work, ia bermula dengan seorang pekerja (satu proses PHP).
Anda boleh memulakan berbilang pekerja untuk memproses kerja secara selari pada tab berbeza secara tempatan dan dalam pengeluaran menggunakan pengurus proses seperti penyelia.
Ini akan memulakan berbilang proses PHP. Setiap pekerja mengendalikan kerja secara bebas, menjadikannya kelihatan seperti tugas berjalan serentak.
Apabila anda beratur untuk kerja di Laravel, inilah yang berlaku langkah demi langkah:
Jika kerja gagal, Laravel mencuba semula atau mengalihkannya ke senarai "kerja gagal" (berdasarkan konfigurasi anda).
Contoh Senario: Menghantar E-mel
Bayangkan anda mempunyai aplikasi Laravel di mana pengguna menyerahkan borang hubungan. Apabila borang diserahkan:
Di latar belakang:
Dalam pengeluaran, pekerja Laravel diuruskan oleh alatan seperti Penyelia. Penyelia memastikan pekerja bekerja 24/7 dan memulakan semula mereka jika mereka ranap.
Contoh Konfigurasi Penyelia:
echo "Hello World!";
arahan: Menjalankan perintah baris gilir:kerja.
numprocs=5: Memulakan 5 pekerja (5 proses PHP) untuk mengendalikan kerja.
Secara teknikal, baris gilir Laravel tidak segerak dalam cara JavaScript atau Node.js mengendalikan tugas. Sebaliknya:
Setiap pekerja mengendalikan satu kerja pada satu masa.
Berbilang pekerja (proses) memberikan keselarian, memberikan penampilan pelaksanaan tak segerak.
Sistem baris gilir Laravel ialah cara pintar untuk mengendalikan tugas di latar belakang, meningkatkan prestasi aplikasi dan pengalaman pengguna. Walaupun PHP itu sendiri adalah satu benang, Laravel mencapai keselarian dengan menjalankan pelbagai proses (pekerja). Reka bentuk yang ringkas namun berkesan ini membolehkan Laravel mengendalikan beban kerja yang berat, walaupun dengan pengehadan PHP.
Atas ialah kandungan terperinci PHP ialah Bahasa Berbenang Tunggal, Jadi Bagaimana Laravel Mengendalikan Pekerjaan Beratur Secara Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!