Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan sistem baris gilir tugas yang cekap dalam PHP untuk memastikan tugasan selesai tepat pada masanya

Bagaimana untuk melaksanakan sistem baris gilir tugas yang cekap dalam PHP untuk memastikan tugasan selesai tepat pada masanya

PHPz
PHPzasal
2023-06-27 08:45:46852semak imbas

Dengan perkembangan pesat Internet, semakin banyak laman web dan aplikasi memerlukan sistem baris gilir tugas yang cekap untuk memastikan tugasan diselesaikan tepat pada masanya. Sebagai bahasa pengaturcaraan sebelah pelayan yang popular, PHP juga mempunyai alat dan fungsi yang berkuasa untuk melaksanakan sistem baris gilir tugas.

Dalam PHP, sistem baris gilir tugas yang biasa digunakan termasuk Gearman dan Beanstalkd. Gearman ialah sistem baris gilir tugas teragih sumber terbuka yang membolehkan berbilang pelanggan dan proses pekerja berbilang bekerja bersama melalui rangkaian. Beanstalkd ialah sistem baris gilir mesej ringan yang boleh mengagihkan tugas dengan mudah kepada berbilang proses pekerja atau menyimpan fail pelaksanaan untuk mencapai pemprosesan tugasan tak segerak.

Seterusnya, kami akan memperkenalkan cara menggunakan Gearman dan Beanstalkd untuk membina sistem giliran tugasan yang cekap dalam PHP.

Gunakan Gearman untuk membina sistem baris gilir tugas

Gearman boleh mendayakan berbilang pelanggan dan proses pekerja untuk bekerja bersama merentas berbilang pelayan, jadi ia amat berfaedah dalam sistem teragih yang besar. Berikut ialah proses menggunakan Gearman untuk membina sistem giliran tugas:

1 Pasang sambungan Gearman

Sebelum menggunakan Gearman, anda perlu memasang sambungan Gearman dalam PHP. Sambungan boleh didayakan dengan menambah extension=gearman.so dalam fail php.ini.

2 Buat pelanggan

Dalam Gearman, anda boleh membuat tugasan melalui kelas GearmanClient PHP. Mula-mula, anda perlu mencipta instance GearmanClient dan tetapkan parameter sambungan pelayan:

$client = new GearmanClient();
$client->addServer('127.0.0.1', 4730);

3. Buat proses pekerja

Dalam Gearman, anda perlu mencipta proses pekerja untuk melaksanakan tugas. Anda boleh mencipta proses pekerja melalui kelas GearmanWorker PHP dan menetapkan parameter sambungan pelayan:

$worker = new GearmanWorker();
$worker->addServer('127.0.0.1', 4730);

4. Daftar fungsi tugas

Dalam Gearman, anda perlu mendaftarkan fungsi tugas untuk menentukan cara tugasan diproses. Mendaftarkan fungsi tugas boleh dilaksanakan menggunakan kaedah addFunction() kelas GearmanWorker PHP:

$worker->addFunction('task_function', 'task_callback');

Antaranya, task_function ialah nama fungsi tugas, dan task_callback ialah fungsi panggil balik yang dilaksanakan selepas tugasan selesai.

5. Hantar tugasan

Dalam Gearman, anda boleh menghantar tugasan melalui kaedah do() kelas GearmanClient. Parameter kaedah do() ialah nama fungsi tugas, data tugas dan fungsi panggil balik Serahkan tugasan kepada pelayan Gearman:

$client->do('task_function', 'task_data', 'task_callback');

6. Laksanakan tugas

Dalam Gearman, anda boleh melaksanakan tugas melalui kerja(. ) kaedah kelas GearmanWorker. Kaedah work() akan menyekat urutan semasa dan menunggu pelaksanaan tugas dalam baris gilir tugas selesai:

while ($worker->work());

Gunakan Beanstalkd untuk membina sistem baris gilir tugas

Beanstalkd ialah sistem baris gilir mesej ringan yang boleh memperuntukkan tugas dengan mudah kepada berbilang tugasan. Proses pekerja atau fail pelaksanaan yang disimpan untuk mencapai tujuan tugas pemprosesan tak segerak. Berikut adalah proses menggunakan Beanstalkd untuk membina sistem giliran tugas:

1 Pasang Beanstalkd

Anda perlu memasang pelayan Beanstalkd terlebih dahulu. Anda boleh melaksanakan arahan berikut dalam sistem Linux:

sudo apt-get update
sudo apt-get install beanstalkd

2 Pasang sambungan PHP

Menggunakan Beanstalkd dalam PHP memerlukan pemasangan sambungan Beanstalkd. Ia boleh dipasang menggunakan arahan berikut:

sudo apt-get update
sudo apt-get install php-beanstalkd

3 Buat klien

Dalam PHP, anda boleh mencipta klien Beanstalk melalui kelas BeanstalkClient untuk menyambung ke pelayan Beanstalkd:

use BeanstalkClient;

$client = new Client(['127.0.0.1:11300']);

4 Dalam PHP, anda perlu menggunakan kelas BeanstalkWorker mencipta proses pekerja Beanstalkd. Anda boleh menggunakan kod berikut:

use BeanstalkWorker;

$worker = new Worker(['127.0.0.1:11300']);

5 Tambah tugasan

Dalam Beanstalkd, anda boleh menggunakan kaedah put() untuk menambah tugasan pada baris gilir tugas. Parameter kaedah put() ialah data tugasan, yang boleh menjadi rentetan atau objek PHP bersiri:

$client->put('task_data');

6. Dapatkan tugasan

Dalam Beanstalkd, anda boleh menggunakan kaedah rizab() untuk mendapatkan tugasan dalam barisan tugas. Kaedah reserve() akan menyekat urutan semasa dan menunggu tugasan dalam baris gilir tugas sebelum kembali:

$job = $worker->reserve();

7. Memproses tugas

Dalam Beanstalkd, anda boleh menggunakan kaedah perform() untuk memproses tugasan. Parameter kaedah perform() ialah ID tugasan dan fungsi panggil balik tugasan Apabila pemprosesan tugasan selesai, fungsi panggil balik akan dipanggil dan tugasan akan dipadamkan:

$worker->perform($job['id'], 'task_callback');

8 , anda boleh menggunakan kaedah delete() untuk memadam tugas . Parameter kaedah delete() ialah ID tugas:

$client->delete($job['id']);

Ringkasan

Di atas ialah proses membina sistem baris gilir tugas menggunakan Gearman dan Beanstalkd dalam PHP. Kedua-dua Gearman dan Beanstalkd boleh membantu kami melaksanakan sistem baris gilir tugas yang cekap untuk memastikan penyempurnaan tugasan tepat pada masanya. Sudah tentu, dalam aplikasi sebenar, ia perlu diselaraskan dan dioptimumkan mengikut keperluan khusus untuk mencapai prestasi dan kesan terbaik.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan sistem baris gilir tugas yang cekap dalam PHP untuk memastikan tugasan selesai tepat pada masanya. 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