PHP tak segerak

WBOY
WBOYasal
2024-08-29 12:51:451152semak imbas

Async di sini bermaksud Asynchronous, yang bermaksud prosesnya tidak segerak. Asynchronous membenarkan pelaksanaan selari kod. Ini bermakna kita boleh menjalankan sekeping kod secara berasingan dan bebas antara satu sama lain. Ini biasanya dipanggil proses async, dan ini adalah sama dalam PHP. Kami mempunyai model Async dalam PHP, yang membolehkan kami melaksanakan pelbagai tugas secara serentak. Ia menjadikan pelaksanaan kod lebih pantas dan meningkatkan prestasi juga.

IKLAN Kursus Popular dalam kategori ini PEMBANGUN PHP - Pengkhususan | 8 Siri Kursus | 3 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks:

Dalam PHP, kita boleh menggunakan pakej Spatie untuk menggunakan ciri async. Dengan pakej ini, kami boleh mencipta kumpulan yang akan mengendalikan panggilan async kami dan membantu kami menyediakan pelaksanaan program yang selari. Untuk penyataan yang lebih baik, kita boleh melihat sintaks. Lihat di bawah;

//package to be used
use Spatie\Async\Pool;
$mypool = Pool::create();
$mypool[] = async() {
//your logic goes here
})->then() {
// your logic
});

Pertama, kita perlu mengimport pakej, iaitu 'SpatieAsyncPool' di sini. Selepas itu, kami mencipta kolam yang akan mengendalikan operasi async untuk kami. Diikuti dengan kata kunci 'async' di dalam ini, kami akan menulis keseluruhan logik dan sekeping kod kami yang ingin kami jalankan secara selari. Di sini kita mempunyai kaedah 'kemudian', iaitu kaedah panggil balik. Di dalam ini, kita juga boleh menulis logik kita sendiri. Selepas semua operasi, kita boleh menulis lebih banyak operasi pada output yang diberikan dalam blok 'kemudian'.

Bagaimana Fungsi async Berfungsi dalam PHP?

Sekarang kita tahu bahawa fungsi async membolehkan kita melaksanakan pelbagai tugas. Jika kita bercakap tentang pengaturcaraan Segerak dalam PHP, jadi kita akan sentiasa mempunyai output dalam susunan yang sama. andaikan kita ingin mencetak nombor dari 1 hingga 10. Jadi jika saya menulis logik ini menggunakan kod Segerak, saya akan sentiasa mendapatkannya dalam tertib menaik. Tetapi jika kami cuba menggunakan kod async di sini untuk logik yang sama, maka kami tidak pasti tentang susunan nombor. Kami akan membincangkan perkara ini dengan lebih terperinci dengan beberapa contoh di bawah. Untuk menulis kod async dalam PHP, kami telah menggunakan satu pakej yang dipanggil 'spatie'. Ini juga memberikan kami pengendalian ralat dan pengecualian yang lebih baik dalam kod async. Pertama, kita akan melihat bagaimana untuk menulis logik mudah menggunakan pakej ini. Kemudian kita akan membincangkan lebih banyak kaedah yang boleh digunakan dengan kod async secara terperinci kemudian.

  • Untuk mencipta blok async, kita perlu mengimport atau menggunakan pakej 'spatie' terlebih dahulu. Kami boleh mengimport ini dalam kod kami seperti di bawah; Kami akan memasang pakej ini dengan menggunakan komposer. Anda boleh mencari arahan komposer juga di bawah sintaks.

Contoh:

use Spatie\Async

cmd:

composer require spatie
  • Langkah kedua ialah kita akan mencipta objek pool. Dengan menggunakan objek ini, kita boleh menulis fungsi async. Lihat sintaks di bawah untuk pemahaman yang lebih baik;

Contoh:

$mypool = Pool::create();

Kami boleh memberikan sebarang nama kepada objek pool. juga, jangan lupa mengimport kelas Pool yang ada di dalam 'Async'. Lihat di bawah;

Contoh:

use Spatie\Async\Pool;
  • Dalam langkah ini, kita kini boleh mencipta fungsi async menggunakan objek pool. Kami boleh memberikan sebarang nama kepada fungsi dan menulis logik kami. Untuk penyataan yang lebih baik, lihat di bawah sintaks;

Contoh:

demoAsync(function () {
// //
})
->then(function ($output) {
// //
})

Dalam sekeping kod di atas, kami sedang mencipta fungsi async dan menggunakan kaedah panggil baliknya 'then.' Fungsi 'then' ini bertanggungjawab untuk beroperasi apabila blok kod di atas berjaya dilaksanakan. Jika tidak, maka kita perlu mengendalikan kes itu dengan menggunakan kaedah Async yang lain.

Sekarang kita akan melihat beberapa kaedah untuk mengendalikan ralat, pengecualian dan tamat masa yang boleh berlaku semasa melaksanakan kod. Pakej ini memberikan kami pelbagai kaedah untuk mengendalikan perkara ini di dalam blok async kod. Mari kita bincangkan setiap daripada mereka secara terperinci. Lihat di bawah;

1. tamat masa

Kaedah ini akan dilaksanakan apabila blok kod gagal melaksanakan operasinya dalam jangka masa yang dijangkakan atau menghadapi ralat. Berikut ialah sintaks untuk menulis kaedah ini:

Contoh:

timeout(function () {
// when timeout reached.
})

2. kemudian

Kaedah akan dilaksanakan jika blok kod berjaya dilaksanakan dan terdapat keperluan untuk melakukan operasi tambahan pada hasilnya. Berikut ialah sintaks untuk menulis kaedah ini:

Contoh:

then(function ($result) {
// operation after result
})

3. tangkap

Kaedah ini akan dilaksanakan jika blok kod melemparkan pengecualian. Di dalam kaedah ini, kita boleh mengendalikannya dan melaksanakan logik kita. Sintaks untuk menulis kaedah ini ditunjukkan di bawah;

Contoh:

catch(function ($exp) {
// exception can be handle here.
})

Examples of PHP async

Following are the examples given below:

Example #1

In this example, we are implementing async with the method and printing two messages to keep it simple for beginners.

Code:

use Spatie\Async\Pool;
$mypool = Pool::create();
$mypool
->asyncDemo(function () {
print("async called here !!")
})
->then(function () {
print("then called after result !!")
} ;

Output:

PHP tak segerak

Example #2

In this example, we are using all the methods of async from the Spatie\Async\ package. Those are catch, then, and timeout. We keep it simple for now without too much logic.

Code:

use Spatie\Async\Pool;
$mypool = Pool::create();
$mypool
->asyncDemo(function () {
print("async called here !!")
print("async called here !!")
})
->then(function ($output) {
print("print called here !!")
})
->catch(function ($exception) {
print("catch called here !!")
})
->timeout(function () {
print("timeout called here !!")
})
;

Output:

PHP tak segerak

Conclusion

By using async in our code, we can enable parallel execution of tasks in our program. Also, they increase the performance of the code because the piece of code is independent of each other. But using StopIteration in situations where the data from the previous block of code is dependent on the current can lead to data loss and inconsistency.

Atas ialah kandungan terperinci PHP tak segerak. 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:PHP strlen()Artikel seterusnya:PHP strlen()