Maison  >  Article  >  développement back-end  >  Comment implémenter la synchronisation des données et la reprise après sinistre à distance de l'API Baidu Wenxin Yiyan dans le développement PHP ?

Comment implémenter la synchronisation des données et la reprise après sinistre à distance de l'API Baidu Wenxin Yiyan dans le développement PHP ?

WBOY
WBOYoriginal
2023-08-16 18:25:491494parcourir

Comment implémenter la synchronisation des données et la reprise après sinistre à distance de lAPI Baidu Wenxin Yiyan dans le développement PHP ?

Comment implémenter la synchronisation des données et la reprise après sinistre à distance de l'API Baidu Wenxin Yiyan dans le développement PHP ?

L'API Baidu Wenxin Yiyan fournit un service de phrases aléatoires populaire, qui peut fournir des phrases intéressantes que les sites Web peuvent afficher sur la page. Dans le développement PHP, nous pouvons obtenir des données de phrase et les afficher sur la page en appelant l'interface API Baidu Wenxin Yiyan. Cependant, afin de garantir l'expérience utilisateur et la disponibilité des données, nous devons mettre en œuvre la synchronisation des données et la reprise après sinistre hors site pour garantir que même en cas de problème, les utilisateurs peuvent toujours accéder au site Web normalement.

Tout d'abord, nous devons intégrer l'API Baidu Wenxin Yiyan dans le projet PHP. Vous pouvez utiliser la bibliothèque cURL pour envoyer des requêtes HTTP afin d'obtenir des données API. Voici un exemple de code :

function getOneWord() {
    $url = 'https://v1.hitokoto.cn';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($response, true);
}

$wordData = getOneWord();
if ($wordData && $wordData['status'] == 'success') {
    echo $wordData['hitokoto'];
} else {
    echo '获取句子失败';
}

Le code ci-dessus envoie une requête à l'API Baidu Wenxin Yiyan via cURL, analyse les données JSON obtenues et affiche enfin la phrase sur la page. Nous présenterons ensuite comment mettre en œuvre la synchronisation des données et la reprise après sinistre à distance.

La synchronisation des données signifie enregistrer les données de phrase obtenues à partir de l'API Baidu Wenxin Yiyan dans la base de données, ce qui peut éviter de demander l'interface API à chaque fois. Nous pouvons utiliser MySQL comme base de données de stockage. Voici un exemple de code simple :

// 首先连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}

// 获取句子数据
$wordData = getOneWord();
if ($wordData && $wordData['status'] == 'success') {
    $hitokoto = $wordData['hitokoto'];
    
    // 将数据插入数据库
    $sql = "INSERT INTO hitokoto (content) VALUES ('$hitokoto')";
    if ($conn->query($sql) === TRUE) {
        echo "数据同步成功";
    } else {
        echo "数据同步失败: " . $conn->error;
    }
} else {
    echo '获取句子失败';
}

$conn->close();

Le code ci-dessus enregistre les phrases obtenues à partir de l'API Baidu Wenxin Yiyan dans la table hitokoto de la base de données MySQL. Chaque fois qu'un utilisateur visite le site Web, nous pouvons obtenir des données de phrase de la base de données à afficher au lieu de demander l'interface API à chaque fois. hitokoto表中。每次用户访问网站时,我们可以从数据库中获取一条句子数据进行展示,而不是每次都请求API接口。

异地容灾是指将数据备份到多个地理位置的服务器上,以防止单点故障。我们可以使用MySQL主从复制来实现数据的异地容灾。以下是一个简单的示例配置:

  1. 配置主服务器(主库):

    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog-format=ROW
  2. 配置从服务器(从库):

    [mysqld]
    server-id=2
    relay-log=mysql-relay-bin
    log-slave-updates=1
    read-only=1
  3. 在主服务器上创建一个用于数据同步的用户并赋予复制权限:

    CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
  4. 在主服务器上执行以下命令获取当前二进制日志的文件名和位置:

    SHOW MASTER STATUS;
  5. 在从服务器上执行以下命令配置复制连接:

    CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123;

其中,192.168.1.10是主服务器的IP地址,mysql-bin.000001是主服务器上获取到的二进制日志文件名,123

La reprise après sinistre à distance fait référence à la sauvegarde des données sur des serveurs situés dans plusieurs emplacements géographiques pour éviter les points de défaillance uniques. Nous pouvons utiliser la réplication maître-esclave MySQL pour réaliser une récupération à distance des données après sinistre. Voici un exemple de configuration simple :
    1. Configurez le serveur maître (bibliothèque principale) :

      START SLAVE;

    Configurez le serveur esclave (bibliothèque esclave) :

    rrreee

    🎜Créez-en un sur le serveur maître pour les données synchronisation Utilisateur et accordez les autorisations de réplication : 🎜rrreee🎜🎜🎜Exécutez la commande suivante sur le serveur maître pour obtenir le nom de fichier et l'emplacement du journal binaire actuel : 🎜rrreee🎜🎜🎜Exécutez la commande suivante sur le serveur esclave pour configurer la réplication connexion : 🎜rrreee🎜🎜🎜où, 192.168.1.10 est l'adresse IP du serveur principal, mysql-bin.000001 est le nom du fichier journal binaire obtenu sur le serveur principal, 123 C'est l'emplacement du journal binaire obtenu sur le serveur principal. 🎜🎜🎜🎜Activez la fonction de réplication du serveur esclave : 🎜rrreee🎜🎜🎜Une fois la configuration terminée, les données sur le serveur maître MySQL seront automatiquement synchronisées avec le serveur esclave. Lorsque le serveur maître tombe en panne, le serveur esclave peut prendre le relais immédiatement. 🎜🎜En résumé, grâce à l'exemple de code et à la configuration ci-dessus, nous pouvons réaliser la synchronisation des données et la reprise après sinistre à distance de l'API Baidu Wenxin Yiyan. Cela améliore les performances et la disponibilité du site Web tout en garantissant que les utilisateurs peuvent accéder normalement au site Web en toutes circonstances. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn