Bagaimana untuk menggunakan PHP dan swoole untuk membina kelompok pengkomputeran teragih yang sangat tersedia?
Dengan perkembangan pesat Internet, keperluan pengkomputeran data berskala besar menjadi semakin biasa. Untuk meningkatkan kecekapan dan kebolehpercayaan pengkomputeran, banyak syarikat telah mula menggunakan kluster pengkomputeran teragih untuk menyelesaikan tugas pengkomputeran yang kompleks. Artikel ini akan memperkenalkan cara menggunakan PHP dan swoole untuk membina kelompok pengkomputeran teragih yang sangat tersedia, dan menyediakan contoh kod untuk rujukan pembaca.
1. Apa itu swool?
swoole ialah rangka kerja komunikasi rangkaian berprestasi tinggi berdasarkan PHP Ia boleh merealisasikan ciri tak segerak, berbilang proses, berbilang benang dan lain-lain serta menyediakan protokol rangkaian yang kaya dan sokongan komponen. swoole boleh digunakan untuk membangunkan pelayan rangkaian berprestasi tinggi dan berkonkurensi tinggi dan kluster pengkomputeran teragih.
2. Langkah untuk membina kluster pengkomputeran teragih
Mula-mula, pasang sambungan swoole ke dalam persekitaran PHP. Ia boleh dipasang melalui PECL atau disusun dan dipasang secara manual. Selepas pemasangan selesai, dayakan sambungan swoole dalam fail php.ini.
Andaikan kita perlu mengira purata set nombor rawak. Pertama, tentukan kelas Pekerja, yang mewarisi kelas Pekerja swoole dan melaksanakan kaedah onMessage dan onStart.
class MyWorker extends Worker { public function onMessage(SwooleServer $server, int $workerId, $message) { $result = array_sum($message) / count($message); $server->send($workerId, $result); } public function onStart(SwooleServer $server) { echo "Worker started. "; } }
Dalam fail utama, cipta objek Pelayan swoole dan nyatakan ruang nama kelas Pekerja dan nombor port tugas pengkomputeran.
$server = new SwooleServer('127.0.0.1', 9501); $server->set([ 'worker_num' => 4, 'task_worker_num' => 4, ]); $server->on('WorkerStart', function (SwooleServer $server, int $workerId) { $worker = new MyWorker(); $server->addProcess($worker); });
Agihkan tugas pengkomputeran kepada proses Pekerja dengan memanggil kaedah $swoole->task().
$server->on('Receive', function (SwooleServer $server, int $fd, int $reactor_id, string $data) { $task_id = $server->task(json_decode($data, true)); echo "Task assigned, task_id: $task_id "; }); $server->on('Finish', function (SwooleServer $server, int $task_id, string $data) { echo "Task finished, result: $data "; // 处理计算结果 });
$server->start();
3 Contoh proses berjalan
Andaikan kita mempunyai tatasusunan yang mengandungi 100 nombor rawak Kami akan mengagihkan tugas pengiraan kepada 4 proses Pekerja dan melaksanakan jumlah dan purata. Kami boleh menggunakan klien Telnet untuk menyambung ke nombor port tugas pengkomputeran dan menghantar data tugas. Di bawah adalah contoh larian.
$ telnet 127.0.0.1 9501 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. [1,2,3,4,5,6,7,8,9,10] Task assigned, task_id: 1 Task assigned, task_id: 2 Task assigned, task_id: 3 Task assigned, task_id: 4 Task finished, result: 5.5 Task finished, result: 5.5 Task finished, result: 5.5 Task finished, result: 5.5
Dalam contoh, kami menghantar data tugasan [1,2,3,4,5,6,7,8,9,10] ke nombor port tugas pengkomputeran, dan kelompok pengkomputeran teragih mengembalikan pengiraan keputusan 5.5 kepada pelanggan Telnet.
4. Ringkasan
Dengan menggunakan PHP dan swoole untuk membina kelompok pengkomputeran teragih yang sangat tersedia, kecekapan dan kebolehpercayaan tugas pengkomputeran boleh dipertingkatkan dengan berkesan. Artikel ini memperkenalkan langkah asas menggunakan swoole dan menyediakan kod sampel untuk mengira purata nombor rawak untuk rujukan pembaca. Pembaca boleh mengembangkan dan mengoptimumkan mengikut keperluan mereka sendiri. Saya harap artikel ini dapat membantu pembaca lebih memahami pembinaan dan aplikasi kluster pengkomputeran teragih.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan PHP dan swoole untuk membina kluster pengkomputeran teragih yang sangat tersedia?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!