>  기사  >  백엔드 개발  >  PHP는 반복적인 요청 및 데이터 중복 제거 처리를 방지하기 위해 Baidu Wenxin Yiyan 인터페이스를 구현합니다.

PHP는 반복적인 요청 및 데이터 중복 제거 처리를 방지하기 위해 Baidu Wenxin Yiyan 인터페이스를 구현합니다.

WBOY
WBOY원래의
2023-08-25 20:52:441497검색

PHP는 반복적인 요청 및 데이터 중복 제거 처리를 방지하기 위해 Baidu Wenxin Yiyan 인터페이스를 구현합니다.

PHP는 Baidu Wenxin Yiyan 인터페이스를 구현하여 반복 요청 및 데이터 중복 제거 처리를 방지합니다

웹 애플리케이션을 개발할 때 애플리케이션을 풍부하게 하기 위해 데이터를 얻기 위해 외부 인터페이스를 호출해야 하는 경우가 많습니다. 그중 Baidu Wenxin Yiyan 인터페이스는 매우 다양한 카테고리의 문장을 무작위로 얻을 수 있는 인기 인터페이스입니다. 그러나 인터페이스를 자주 요청하는 경우 반복 요청을 방지하는 동시에 획득한 데이터를 중복 제거하여 데이터 중복을 방지하는 방법을 고려해야 합니다.

이 기사에서는 PHP를 사용하여 Baidu Wenxin Yiyan 인터페이스를 구현하여 반복 요청을 방지하고 데이터 중복을 제거하는 방법을 보여 드리겠습니다.

우선 Baidu Wenxin Yiyan 인터페이스를 사용하는 방법을 명확히 해야 합니다. 다음 인터페이스 URL로 GET 요청을 보내면 문장을 얻을 수 있습니다.

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

이 인터페이스는 문장 내용, 소스 및 기타 정보를 포함하여 문장의 JSON 데이터를 반환합니다.

다음으로 중복 요청을 방지하는 방법을 고려해야 합니다. 캐시를 사용하여 가장 최근 요청의 타임스탬프를 저장하고 이를 현재 타임스탬프와 비교할 수 있습니다. 둘 사이의 시간 간격이 짧으면 다른 요청을 하지 않고도 캐시에서 직접 이전 요청의 결과를 얻을 수 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.