Cara melaksanakan push dan langganan data selepas penyerahan borang PHP
Dengan perkembangan Internet, penghantaran data menjadi semakin penting. Dalam pembangunan laman web, selalunya perlu menyerahkan data melalui borang dan proses serta menyimpan data ini. Dalam beberapa senario tertentu, kami juga berharap untuk menolak data ini kepada aplikasi atau pengguna lain dalam masa nyata untuk langganan bagi mencapai lebih banyak fungsi. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan tolak dan langganan data selepas penyerahan borang, dan memberikan contoh kod yang sepadan.
Biasanya terdapat dua cara tolak data: tinjauan pendapat dan sambungan panjang. Dalam tinjauan pendapat, pelanggan secara berkala menghantar permintaan kepada pelayan untuk melihat sama ada data baharu tersedia. Dalam sambungan yang panjang, pelayan secara aktif menolak data kepada klien. Memandangkan sambungan panjang boleh menolak data dalam masa nyata, sambungan panjang lebih biasa digunakan apabila melaksanakan tolak dan langganan data.
Dalam PHP, kami boleh menggunakan teknologi WebSocket untuk melaksanakan sambungan yang panjang. WebSocket ialah protokol untuk komunikasi dupleks penuh melalui sambungan TCP tunggal, yang membolehkan pelayan menolak data secara aktif kepada klien. Dalam PHP, kita boleh menggunakan perpustakaan Ratchet untuk memudahkan pembangunan WebSocket.
Pertama, kita perlu menyediakan pelayan WebSocket. Anda boleh menggunakan contoh kod berikut:
use RatchetMessageComponentInterface; use RatchetConnectionInterface; require dirname(__DIR__) . '/vendor/autoload.php'; class PushServer implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { echo "新连接({$conn->resourceId})加入 "; $this->clients->attach($conn); } public function onMessage(ConnectionInterface $from, $msg) { echo "收到来自({$from->resourceId})的消息:{$msg} "; foreach ($this->clients as $client) { $client->send($msg); } } public function onClose(ConnectionInterface $conn) { echo "连接({$conn->resourceId})关闭 "; $this->clients->detach($conn); } public function onError(ConnectionInterface $conn, Exception $e) { echo "出现错误:{$e->getMessage()} "; $conn->close(); } } $server = RatchetServerIoServer::factory( new RatchetHttpHttpServer( new RatchetWebSocketWsServer( new PushServer() ) ), 8080 ); $server->run();
Dalam kod di atas, kami melaksanakan kelas PushServer untuk mengendalikan sambungan, penghantaran mesej dan operasi lain pelayan WebSocket. Antaranya, kaedah onOpen() dipanggil apabila sambungan baharu ditambah, kaedah onMessage() dipanggil apabila mesej diterima, kaedah onClose() dipanggil apabila sambungan ditutup dan kaedah onError() ialah dipanggil apabila ralat berlaku. Dalam kaedah onMessage(), kami menghantar mesej yang diterima kepada semua pelanggan yang disambungkan.
Seterusnya, kita perlu memproses data borang yang diserahkan dalam PHP dan menghantar data ke pelayan WebSocket untuk ditolak. Anda boleh menggunakan contoh kod berikut:
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 处理表单提交的数据 $data = $_POST['data']; // 将数据发送给WebSocket服务器 $client = new RatchetClientWebSocket('ws://localhost:8080'); $client->send($data); $client->close(); } ?>
Dalam kod di atas, kami mula-mula mendapatkan data yang diserahkan oleh borang melalui $_POST['data'], dan kemudian gunakan klien WebSocket yang disediakan oleh perpustakaan Ratchet untuk menghantar data ke pelayan WebSocket.
Melalui contoh kod di atas, kami telah melaksanakan fungsi tolak data dan langganan selepas borang PHP diserahkan. Apabila pengguna menyerahkan borang, data borang diterima oleh pelayan WebSocket dan ditolak kepada semua pelanggan yang dilanggan. Dengan cara ini, aplikasi atau pengguna lain boleh mendapatkan data ini dalam masa nyata dan memprosesnya dengan sewajarnya.
Sudah tentu, dalam aplikasi sebenar, beberapa faktor lain mungkin perlu dipertimbangkan, seperti keselamatan, kestabilan, dsb. Tetapi melalui contoh kod di atas, anda sepatutnya dapat memahami secara asasnya cara menggunakan PHP untuk melaksanakan tolak dan langganan data selepas penyerahan borang. Harap artikel ini membantu anda!
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan push dan langganan data selepas penyerahan borang PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!