Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Teknik pengaturcaraan selari dalam PHP

Teknik pengaturcaraan selari dalam PHP

王林
王林asal
2023-05-23 19:21:041641semak imbas

Dengan perkembangan pesat Internet, pembangunan aplikasi web berskala besar telah menjadi semakin popular. Dalam kes ini, aplikasi web perlu mengendalikan permintaan daripada ratusan atau bahkan ribuan pengguna. Ini memerlukan teknik pengaturcaraan selari untuk meningkatkan prestasi program apabila mengendalikan berbilang permintaan.

PHP ialah bahasa skrip popular yang digunakan secara meluas untuk pembangunan aplikasi web. PHP menyediakan pelbagai teknologi pengaturcaraan selari, termasuk pengaturcaraan berbilang proses, berbilang benang dan tak segerak. Dalam artikel ini, kami akan memperkenalkan teknologi ini dan cara ia boleh membantu kami melaksanakan aplikasi web yang lebih cekap.

1. Pengaturcaraan berbilang proses

Pengaturcaraan berbilang proses merujuk kepada mencipta berbilang proses dalam aplikasi, dan setiap proses berjalan secara berasingan antara satu sama lain. Setiap proses mempunyai ruang ingatan sendiri dan boleh melaksanakan tugas yang berbeza secara selari. Dalam PHP, anda boleh menggunakan fungsi fork untuk mencipta proses baharu.

Berikut ialah contoh berbilang proses PHP yang mudah:

$pid = pcntl_fork();

if ($pid == -1) {
    // 失败
    exit("Could not fork
");
} elseif ($pid) {
    // 父进程代码
    pcntl_wait($status); // 等待子进程结束
} else {
    // 子进程代码
    // 执行任务
    exit();
}

Dalam kod di atas, kami mula-mula menggunakan fungsi pcntl_fork untuk mencipta proses baharu. Jika fungsi mengembalikan -1, ini bermakna penciptaan proses gagal dan program keluar. Jika tidak, proses induk akan menunggu proses anak selesai dilaksanakan.

Dalam proses kanak-kanak, kami boleh melaksanakan tugas yang diperlukan. Selepas pelaksanaan, untuk menghalang proses anak daripada terus melaksanakan kod proses induk, kami menggunakan fungsi exit() untuk menamatkan pelaksanaan program proses anak.

2. Pengaturcaraan berbilang benang

Pengaturcaraan berbilang benang merujuk kepada mencipta berbilang rangkaian dalam aplikasi, dengan setiap rangkaian berjalan secara berasingan antara satu sama lain. Tidak seperti berbilang proses, semua benang berkongsi ruang memori yang sama. Dalam PHP, anda boleh menggunakan sambungan pthreads untuk melaksanakan pengaturcaraan berbilang benang.

Berikut ialah contoh PHP berbilang benang mudah:

class MyThread extends Thread
{
    public function run()
    {
        // 执行任务
    }
}

$threads = [];
for ($i = 0; $i < 10; $i++) {
    $thread = new MyThread();
    $threads[] = $thread;
    $thread->start();
}

foreach ($threads as $thread) {
    $thread->join();
}

Dalam kod di atas, kami mula-mula mentakrifkan kelas MyThread dan mewarisi kelas Thread. Dalam kaedah larian kelas MyThread, kita boleh melaksanakan tugasan yang diperlukan.

Dalam utas utama, kami mencipta 10 utas baharu dan menyimpannya dalam tatasusunan $threads. Kami kemudian mengulangi benang ini dan memanggil kaedah permulaan untuk memulakannya. Selepas semua utas selesai dilaksanakan, kami memanggil kaedah gabungan untuk menunggu sehingga mereka tamat.

3. Pengaturcaraan tak segerak

Pengaturcaraan tak segerak merujuk kepada melaksanakan berbilang tugas secara serentak dalam aplikasi tanpa menunggu sebarang tugas selesai. Dalam PHP, anda boleh menggunakan sambungan swoole untuk melaksanakan pengaturcaraan tak segerak.

Berikut ialah contoh pengaturcaraan tak segerak PHP yang mudah:

$server = new swoole_http_server("127.0.0.1", 9501);

$server->on("request", function ($request, $response) {
    // 执行任务
});

$server->start();

Dalam kod di atas, kami mula-mula mencipta objek swoole_http_server dan nyatakan alamat IP dan nombor port. Kemudian, kami menggunakan kaedah on untuk menentukan pengendali acara permintaan.

Dalam pengendali acara ini, kami boleh melaksanakan sebarang tugas yang diperlukan. Memandangkan semua tugasan dilaksanakan secara tidak segerak, tidak perlu menunggu sebarang tugas selesai.

Akhir sekali, kami memanggil kaedah $server->start() untuk memulakan pelayan dan mula mendengar permintaan.

Ringkasan

Teknik pengaturcaraan selari adalah bahagian penting dalam menulis aplikasi web yang cekap. Dalam PHP, kita boleh menggunakan pengaturcaraan berbilang proses, berbilang benang dan tak segerak untuk meningkatkan prestasi program. Dengan teknologi yang betul, kami boleh membangunkan aplikasi web yang cekap dengan mudah dan memberikan pengalaman yang lebih baik kepada pengguna.

Atas ialah kandungan terperinci Teknik pengaturcaraan selari dalam PHP. 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