ホームページ > バックエンド開発 > PHPチュートリアル > phpとWebsocketを使ったネット投票機能の開発

phpとWebsocketを使ったネット投票機能の開発

WBOY
リリース: 2023-12-02 08:54:01
オリジナル
714 人が閲覧しました

phpとWebsocketを使ったネット投票機能の開発

PHP と WebSocket を使用したオンライン投票機能の開発

はじめに

インターネットの急速な発展に伴い、従来のアクティビティは徐々に移行してきました。オンラインプラットフォーム上で実施されます。その一つが投票キャンペーンです。 PHPとWebSocket技術を組み合わせることで、シンプルで実用的なオンライン投票機能を実装できます。この記事では、PHP と WebSocket を使用して完全なオンライン投票システムを開発する方法を紹介し、いくつかの具体的なコード例を示します。

システム要件

ネット投票機能を実装するには、以下のシステム要件を満たしている必要があります。

  1. サーバー環境:PHP 7.0以降、サポートWebSocket 拡張機能 (swoole 拡張機能など)。
  2. クライアント ブラウザ: Chrome、Firefox などの HTML5 をサポートするブラウザ。

アーキテクチャ設計

オンライン投票システムを設計する前に、いくつかの主要な機能と実装方法を決定する必要があります。

  1. データ ストレージ: データベースを使用します ( MySQL など) を使用して、投票オプション、投票統計などの投票関連データを保存します。
  2. WebSocket サーバー: PHP の WebSocket 拡張機能 (swoole など) をサーバーとして使用し、クライアントの接続リクエストとメッセージ プッシュを受信します。
  3. WebSocket クライアント: JavaScript で記述された WebSocket クライアント。サーバーとのリアルタイム通信に使用されます。
  4. ユーザー インターフェイス: HTML、CSS、および JavaScript を使用して、投票オプションを表示し、投票統計をリアルタイムに表示するためのユーザー インターフェイスを実装します。

実装手順

オンライン投票機能を実装するには、次の手順に従います。

  1. データベース テーブルの作成
    Create in MySQL 投票オプションを保存するためにテーブルが使用されます。テーブル構造は次のとおりです:

    CREATE TABLE `voting_options` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `option_name` varchar(255) NOT NULL,
     `vote_count` int(11) NOT NULL DEFAULT '0',
     PRIMARY KEY (`id`)
    );
    ログイン後にコピー
  2. サーバー コードの作成
    最初に swoole 拡張機能をインストールし、次に WebSocket サーバーを作成する必要がありますそして、指定されたポートをリッスンします。新しい接続が確立されたら、クライアントの投票オプション ID を取得し、データベース内の対応するオプションの投票数を更新します。コード例は次のとおりです。

    <?php
    // 创建WebSocket服务器
    $server = new SwooleWebSocketServer('0.0.0.0', 9501);
    
    // 当有新的连接建立时
    $server->on('open', function ($server, $request) {
        // 解析请求中的投票选项ID
        $optionId = $_GET['option_id'];
    
        // 更新数据库中对应选项的投票数量
    
        // 推送投票统计结果给所有已连接的客户端
    });
    
    // 启动服务器
    $server->start();
    ログイン後にコピー
  3. クライアント コードの記述
    HTML で、投票オプションのボタンを追加し、JavaScript を使用して WebSocket 接続を作成し、メッセージ プッシュをリッスンします。サーバー。ボタンをクリックすると、WebSocket を使用して投票オプション ID がサーバーに送信されます。コード例は次のとおりです。

    <html>
    <head>
        <!-- 引入jQuery库 -->
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    </head>
    <body>
        <!-- 添加投票选项的按钮 -->
        <button id="option1" onclick="vote(1)">选项1</button>
        <button id="option2" onclick="vote(2)">选项2</button>
        <button id="option3" onclick="vote(3)">选项3</button>
    
        <!-- 引入WebSocket客户端代码 -->
        <script>
            // 创建WebSocket连接
            var socket = new WebSocket('ws://localhost:9501');
    
            // 监听服务端的消息推送
            socket.onmessage = function(event) {
                // 更新投票统计结果
            };
    
            // 投票函数
            function vote(optionId) {
                // 发送投票选项ID给服务端
            }
        </script>
    </body>
    </html>
    ログイン後にコピー
  4. データベースを更新し、投票統計結果をプッシュします
    サーバー コードでは、受け取った投票オプション ID に従って、投票数を更新します。データベース内の対応するオプションを調べます。次に、WebSocket 経由で、接続されているすべてのクライアントに投票統計結果をプッシュします。コード サンプルは次のとおりです。

    <?php
    // 创建WebSocket服务器
    $server = new SwooleWebSocketServer('0.0.0.0', 9501);
    
    // 当有新的连接建立时
    $server->on('open', function ($server, $request) {
        // 解析请求中的投票选项ID
        $optionId = $_GET['option_id'];
    
        // 更新数据库中对应选项的投票数量
        $optionId = intval($optionId);
        $result = mysqli_query($conn, "UPDATE voting_options SET vote_count = vote_count + 1 WHERE id = $optionId");
        if ($result) {
            // 推送投票统计结果给所有已连接的客户端
            $votingLiveData = getVotingLiveData(); // 获取投票统计数据
            $server->push($request->fd, $votingLiveData); // 发送投票统计数据给当前客户端
            $server->push($request->fd, $votingLiveData, WEBSOCKET_OPCODE_BINARY);
        }
    });
    
    // 启动服务器
    $server->start();
    ログイン後にコピー

概要

この記事では、PHP と WebSocket を使用して簡単なオンライン投票機能を開発する方法を紹介します。 PHP をサーバーとして、HTML、CSS、JavaScript を使用してユーザー インターフェイスを実装し、WebSocket をリアルタイム通信に使用することで、投票統計をリアルタイムに更新するオンライン投票システムを実装できます。このサンプル コードは単なる例であり、実際の状況では、特定のニーズに基づいていくつかの調整や最適化が必要になる場合があります。この記事がオンライン投票機能の開発に役立つことを願っています。

以上がphpとWebsocketを使ったネット投票機能の開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート