Cara melaksanakan peruntukan dan penjadualan tugas teragih dalam perkhidmatan mikro PHP
Peruntukan dan penjadualan tugas teragih ialah keperluan biasa apabila membina aplikasi berskala besar. Sebagai bahasa pembangunan web yang biasa digunakan, PHP juga boleh digunakan untuk membina seni bina perkhidmatan mikro dan melaksanakan peruntukan dan penjadualan tugas teragih. Artikel ini akan memperkenalkan cara melaksanakan peruntukan tugas dan penjadualan teragih dalam perkhidmatan mikro PHP dan menyediakan contoh kod khusus.
1. Peruntukan tugas teragih
Dalam pengagihan tugasan teragih, terdapat penerbit tugasan yang menerbitkan tugasan ke baris gilir tugas, dan kemudian pengguna berbilang tugas memproses tugasan ini. Dalam PHP, baris gilir boleh digunakan untuk melaksanakan pengagihan tugas. Perkhidmatan baris gilir yang biasa digunakan termasuk RabbitMQ dan Redis.
Terbitkan contoh kod tugas:
channel(); $channel->queue_declare('task_queue', false, true, false, false); $data = implode(' ', array_slice($argv, 1)); if (empty($data)) { $data = "Hello World!"; } $msg = new AMQPMessage($data, ['delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT]); $channel->basic_publish($msg, '', 'task_queue'); echo " [x] Sent $data "; $channel->close(); $connection->close(); ?>
Terima contoh kod tugas:
channel(); $channel->queue_declare('task_queue', false, true, false, false); echo " [*] Waiting for messages. To exit, press CTRL+C "; $callback = function ($msg) { echo ' [x] Received ', $msg->body, " "; sleep(substr_count($msg->body, '.')); echo " [x] Done "; $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']); }; $channel->basic_qos(null, 1, null); $channel->basic_consume('task_queue', '', false, false, false, false, $callback); while ($channel->is_consuming()) { $channel->wait(); } $channel->close(); $connection->close(); ?>
Terbitkan contoh kod tugas:
connect('127.0.0.1', 6379); $data = implode(' ', array_slice($argv, 1)); if (empty($data)) { $data = "Hello World!"; } $redis->lPush('task_queue', $data); echo " [x] Sent $data "; ?>
Terima contoh kod tugas:
connect('127.0.0.1', 6379); echo " [*] Waiting for messages. To exit, press CTRL+C "; while (true) { $data = $redis->brPop('task_queue', 0); echo ' [x] Received ', $data[1], " "; sleep(substr_count($data[1], '.')); echo " [x] Done "; } ?>
Contoh kod di atas boleh menerbitkan tugasan ke baris gilir, dan kemudian memproses tugasan ini oleh berbilang pengguna. Bilangan pengguna boleh ditambah mengikut keperluan sebenar untuk mencapai pemprosesan tugas teragih.
2. Penjadualan Tugas Teragih
Penjadualan tugas teragih bermakna dalam sistem teragih, tugasan diberikan kepada nod yang sesuai untuk dilaksanakan mengikut peraturan tugasan yang khusus. Dalam PHP, anda boleh menggunakan penjadual tugas untuk melaksanakan penjadualan tugas teragih. Penjadual tugas yang biasa digunakan termasuk penjadual tugas Laravel dan Cron.
Tulis fail skrip:
Salin selepas log masuk
Tetapkan ungkapan Cron:
command('task:process')->everyMinute(); } protected function commands() { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan peruntukan tugas teragih dan penjadualan dalam perkhidmatan mikro PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!