ホームページ  >  記事  >  バックエンド開発  >  PHP は、Baidu Wenxin Yiyan インターフェイスを実装して、リクエストの繰り返しとデータ重複排除処理を防止します。

PHP は、Baidu Wenxin Yiyan インターフェイスを実装して、リクエストの繰り返しとデータ重複排除処理を防止します。

WBOY
WBOYオリジナル
2023-08-25 20:52:441420ブラウズ

PHP は、Baidu Wenxin Yiyan インターフェイスを実装して、リクエストの繰り返しとデータ重複排除処理を防止します。

PHP は Baidu Wenxin Yiyan インターフェイスを実装して、リクエストの繰り返しとデータ重複排除処理を防止します

Web アプリケーションを開発するとき、データを取得するために外部インターフェイスを呼び出す必要があることがよくあります。私たちのアプリケーションである Baidu Wenxin Yiyan インターフェイスは、さまざまなカテゴリのランダムな文を取得できる非常に人気のあるインターフェイスです。ただし、頻繁にインターフェースをリクエストする場合は、リクエストの繰り返しを防ぐと同時に、取得したデータを重複排除してデータの重複を避ける方法を検討する必要があります。

この記事では、PHP を使用して、Baidu Wenxin Yiyan インターフェイスの反復リクエストの防止とデータ重複排除処理を実装する方法を説明します。

まず第一に、Baidu Wenxin Yiyan インターフェイスの使用方法を明確にする必要があります。次のインターフェイス URL に GET リクエストを送信することで、文を取得できます。

GET http://api.lwl12.com/hitokoto/v1?encode=json

このインターフェイスは、文の内容、ソース、その他の情報を含む文の JSON データを返します。

次に、リクエストの重複を防ぐ方法を検討する必要があります。キャッシュを使用して、最新のリクエストのタイムスタンプを保存し、それを現在のタイムスタンプと比較できます。2 つの時間間隔が短い場合は、別のリクエストを行わずに、前のリクエストの結果をキャッシュから直接取得できます。

function getHitokoto() {
    $cacheFile = 'cache.txt';
    $cacheTime = 60;  // 缓存时间,单位为秒

    if (file_exists($cacheFile) && time() - filemtime($cacheFile) < $cacheTime) {
        // 直接从缓存中获取上次请求的结果
        $result = file_get_contents($cacheFile);
    } else {
        // 发起新的请求
        $result = file_get_contents('http://api.lwl12.com/hitokoto/v1?encode=json');

        // 将结果保存到缓存文件中
        file_put_contents($cacheFile, $result);
    }

    return $result;
}

上記のコードでは、最初にキャッシュ ファイル名とキャッシュ時間を定義します。 gethitokoto 関数では、file_exists 関数と filemtime 関数を使用して、キャッシュ ファイルが存在するかどうか、および有効期限が切れているかどうかを判断します。キャッシュ ファイルが存在し、有効期限が切れていない場合は、キャッシュから結果を直接取得します。そうでない場合は、新しいリクエストを開始し、結果をキャッシュ ファイルに保存します。

次に、データ重複排除を実行する方法を検討する必要があります。取得した文をデータベースに保存し、各リクエストの前にデータベースにクエリを実行し、文がすでに存在する場合は、繰り返しのない文が取得されるまでリクエストを再度開始します。

以下は簡単な例です:

function getHitokoto() {
    // 连接数据库
    $conn = new mysqli('localhost', 'username', 'password', 'database');

    // 检查数据库连接是否成功
    if ($conn->connect_error) {
        die('数据库连接失败:' . $conn->connect_error);
    }

    // 查询数据库中已有的句子
    $existingStatements = $conn->query('SELECT statement FROM hitokoto');

    // 将查询结果转换为数组
    $existingStatementsArr = [];
    while ($row = $existingStatements->fetch_assoc()) {
        $existingStatementsArr[] = $row['statement'];
    }

    // 发起请求直到获取到一个未重复的句子
    do {
        $result = file_get_contents('http://api.lwl12.com/hitokoto/v1?encode=json');
        $resultArr = json_decode($result, true);
        $statement = $resultArr['hitokoto'];
    } while (in_array($statement, $existingStatementsArr));

    // 插入新句子到数据库
    $conn->query('INSERT INTO hitokoto (statement) VALUES ("' . $statement . '")');

    // 关闭数据库连接
    $conn->close();

    return $result;
}

上記のコードでは、まずデータベースに接続し、既存の文をクエリします。次に、リクエストを行う前に、do-while ループを使用して、返された文がデータベースにすでに存在するかどうかを判断します。存在する場合は、繰り返されていない文が取得されるまで、新しいリクエストが再度開始されます。最後に、新しい文をデータベースに挿入し、データベース接続を閉じます。

上記のコード例を通じて、Baidu Wenxin Yiyan インターフェイスの重複リクエストの防止とデータ重複排除処理を実現できます。キャッシュとデータベースを使用することで、同じ文を繰り返し取得することを避けながら、リクエストの効率を向上させることができます。これにより、アプリケーションがより安定し、効率的になります。

要約すると、キャッシュとデータベースを適切に使用することで、外部インターフェイス呼び出しを最適化し、独自のアプリケーションのパフォーマンスと安定性を向上させることができます。開発中は、リクエストの繰り返しを防ぎ、実際のニーズに基づいてデータ重複排除を実行するための適切な方法を選択する必要があります。

以上がPHP は、Baidu Wenxin Yiyan インターフェイスを実装して、リクエストの繰り返しとデータ重複排除処理を防止します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。