


Une brève analyse du fonctionnement simple du mécanisme de verrouillage MySQL par PHP
Mécanisme de verrouillage
Verrouillage partagé et verrouillage exclusif
Verrouillage partagé (verrouillage en lecture) : les autres transactions peuvent lire, mais ne peuvent pas écrire.
Verrouillage exclusif (verrouillage en écriture) : les autres transactions ne peuvent ni lire ni écrire.
Pour MySQL, il existe trois niveaux de verrouillage : niveau page, niveau table, niveau ligne
- Le moteur représentatif typique du niveau page est BDB.
- Un moteur typique au niveau des lignes est INNODB.
- Les moteurs représentatifs typiques au niveau de la table sont MyISAM, MEMORY et l'ISAM d'il y a longtemps.
- Le moteur de stockage BDB utilise le verrouillage au niveau de la page, mais prend également en charge les verrous au niveau de la table
- Le moteur de stockage InnoDB prend en charge à la fois le verrouillage au niveau de la ligne (verrouillage au niveau de la ligne) et le verrouillage au niveau de la table. des verrous au niveau de la ligne, mais les verrous au niveau de la ligne sont utilisés par défaut.
- Les moteurs de stockage MyISAM et MEMORY utilisent des verrous au niveau des tables
Recommandations d'apprentissage gratuites associées : programmation php(vidéo)
1. Verrouillage de la table MyISAM
Mode de verrouillage au niveau de la table MyISAM :
Méthode de verrouillage de la table MyISAM :
- Verrouillage en lecture partagé de la table (Table Read Lock) : Non Il bloquera les demandes de lecture des autres utilisateurs sur la même table, mais il bloquera les demandes d'écriture sur la même table
- Verrouillage d'écriture de la table : il bloquera les opérations de lecture et d'écriture des autres utilisateurs sur la même table ; 🎜>
Utilisez la commande LOCK TABLE pour verrouiller explicitement la table MyISAM
- LOCK TABLES real_table (READ|WRITE), insert_table ( READ|WRITE); //Lock
- UNLOCK TABLES; //Unlock
Exemple :Opération 1.1PHPPar exemple, il y a un compte (id, nom ,cash), héros (numéro, nom, pays) ces deux tables
verrouiller les tables compte lu ; Ajouter un compte comme verrou en lecture seule
- Requête de processus actuelle : sélectionner * à partir du héros ; La table de rapport 'hero' n'a pas été verrouillée avec LOCK TABLES.
Le processus actuel modifie les autres tables : mettre à jour le nom du jeu de héros = "ss" où numéro = 1 ; signalera que la table 'héros" n'a pas été verrouillée avec LOCK TABLES
Le processus actuel modifie le nom de la table : mettre à jour le nom du jeu de comptes = "ssss" où id=1 ; il signalera que la table 'compte' a été verrouillée avec un verrou READ et ne peut pas être mise à jour
Si un autre processus MySQL arrive, vous pouvez interroger d'autres tables et comptes, mais vous ne pouvez pas modifier le compte, et vous continuerez d'attendre et devrez être libéré. Le verrou est exécuté
<?php/**
* Created by PhpStorm.
* User: Administrator
* Date: 2021/4/29 0029
* Time: 11:20
*/$link = new mysqli('127.0.0.1', 'root', '123', 'db_school'); // 连接数据库if(mysqli_connect_errno()){ // 检查连接错误
printf("连接失败:%s<br>", mysqli_connect_error());
exit();}//(s1)$table = "account";$type = "read";$sql1 = "LOCK TABLES $table $type";$link->query($sql1);//处理逻辑//$sql1 = "select * from $table;"; //(s1)true//$sql1 = "select * from hero;"; //false//$sql1 = "update hero set name='ss' where number=1; "; //false$sql1 = "update account set name='ssss' where id=1;"; //false$result = $link->query($sql1);var_dump($result);sleep(20); //测试 //假设还没释放锁,开启cmd进mysql(s2)可以查询,但不能执行更改和删除操作,会等待这边释放锁$link->query("unlock tables"); //取消全部的锁//解锁后正常操作//$result = $link -> query($sql1);//var_dump($result);$link->close();
Confliction de verrouillage au niveau de la table de requête2. Méthode de verrouillage InnoDB :afficher le statut comme 'Table%';
Table_locks_immediate fait référence au nombre de fois où des verrous au niveau de la table peuvent être obtenus immédiatement
- Table_locks_waited fait référence au nombre de fois où des verrous au niveau de la table les verrous ne peuvent pas être obtenus immédiatement et doivent attendre
Pour les instructions SELECT ordinaires, InnoDB n'ajoutera aucun verrou Le verrouillage ne peut être utilisé que pendant l'exécution de la transactionLes verrous ne peuvent être utilisés que pendant l'exécution de la transaction. Ils ne seront libérés que lorsque la validation ou la restauration sera exécutée, et tous les verrous seront libérés en même temps.
Verrou(s) partagé(s) : SELECT * FROM nom_table OÙ… VERROUILLER EN MODE PARTAGE. D'autres sessions peuvent toujours interroger l'enregistrement et ajouter des verrous partagés en mode partage à l'enregistrement. Cependant, si la transaction en cours doit mettre à jour l'enregistrement, cela risque de provoquer un blocage. Tout le monde peut le lire, mais il ne peut pas le modifier. Il ne peut être modifié que lorsque l'un des verrous partagés exclusifs est verrouilléOpération PHP 2.1
- Verrou exclusif (X) : SELECT * FROM table_name WHERE ... FOR UPDATE ; Les autres sessions peuvent interroger l'enregistrement, mais ne peuvent pas ajouter de verrous partagés ou exclusifs à l'enregistrement, mais attendent d'obtenir le verrou. Je veux le changer, mais vous ne pouvez pas le changer ni le lire
#select … verrouiller en mode partage //Verrouillage partagé- #select … pour la mise à jour //Verrouillage exclusif
##Dans MySQL 8.0
Verrou partagé (S) : SELECT * FROM nom_table WHERE … FOR SHARE- Verrou exclusif (X) : SELECT * FROM nom_table WHERE … FOR UPDATE[NOWAIT|SKIP LOCKED]
– NOWAIT : Découverte Après avoir attendu un verrou, une erreur sera immédiatement renvoyée. Il n'est pas nécessaire d'attendre que le verrou expire et signale une erreur.- –SKIP LOCKED : ignorez les lignes verrouillées et mettez directement à jour les autres lignes, mais veillez à ce que les résultats de la mise à jour ne répondent pas aux attentes.
<?php/** * Created by PhpStorm. * User: Administrator * Date: 2021/4/29 0029 * Time: 10:06 */$link = new mysqli('127.0.0.1', 'root', '123', 'db_school'); // 连接数据库if(mysqli_connect_errno()){ // 检查连接错误 printf("连接失败:%s<br>", mysqli_connect_error()); exit();}//案例1$id = 1; //明确指定主键,并且有此数据,row lock (行锁)//$id = -1; //明确指定主键,若查无此数据,无lock (无锁)$link->autocommit(0); // 开始事务(s1)//FOR UPDATE仅适用于InnoDB,且必须在交易区块(BEGIN/COMMIT)中才能生效。$sql = "select * from account where id=$id for update";$link->query($sql);/*** * 此时其他mysql进程可以查询该记录,但是不能对该记录加共享锁或排他锁,而是等待获得锁。 *///(s1)可以进行更改,和查询等操作//$sql1 = "update account set name='aaa' where id=$id;"; //进行更改//$sql1 = "select * from account where id=$id;"; //进行查询$sql1 = "delete from account where id=$id;"; //进行删除$result = $link -> query($sql1);var_dump($result);sleep(20); //测试 //假设还在事务处理中,开启cmd进mysql(s2)执行更改和删除操作,会等待这边释放锁$link->commit();$link->close();Afficher les tables verrouillées
afficher les TABLES OUVERTES où In_use > en cours d'exécution.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











La méthode principale de création de fonctions de partage social dans PHP est de générer dynamiquement des liens de partage qui répondent aux exigences de chaque plate-forme. 1. Obtenez d'abord la page actuelle ou les informations d'URL et d'article spécifiées; 2. Utilisez UrLencode pour coder les paramètres; 3. Épisser et générer des liens de partage en fonction des protocoles de chaque plate-forme; 4. Afficher les liens sur l'avant pour que les utilisateurs puissent cliquer et partager; 5. Générez dynamiquement des balises OG sur la page pour optimiser l'affichage du contenu du partage; 6. Assurez-vous d'échapper à la saisie des utilisateurs pour empêcher les attaques XSS. Cette méthode ne nécessite pas d'authentification complexe, a de faibles coûts de maintenance et convient à la plupart des besoins de partage de contenu.

1. La maximisation de la valeur commerciale du système de commentaires nécessite de combiner la livraison précise de la publicité native, les services à valeur ajoutée par l'utilisateur (tels que le téléchargement d'images, les commentaires de recharge), d'influencer le mécanisme d'incitation basé sur la qualité des commentaires et la conformité de la monétisation anonyme des données de données; 2. La stratégie d'audit doit adopter une combinaison de mécanismes de filtrage des mots clés dynamiques pré-audit et de signalement des utilisateurs, complétés par une note de qualité des commentaires pour réaliser une exposition hiérarchique de contenu; 3. Anti-brosses nécessite la construction d'une défense multicouche: la vérification sans capteur RecaptChav3, le robot de reconnaissance de champ de miel, IP et la limite de fréquence d'horodatage empêchent l'arrosage, et la reconnaissance du modèle de contenu marque les commentaires suspects et itéra en continu pour traiter les attaques.

L'idée principale d'intégrer les capacités de compréhension visuelle AI dans les applications PHP est d'utiliser l'API de service visuel AI tiers, qui est responsable du téléchargement d'images, de l'envoi de demandes, de la réception et de l'analyse des résultats JSON et du stockage de balises dans la base de données; 2. Le marquage automatique de l'image peut considérablement améliorer l'efficacité, améliorer la recherche de contenu, optimiser la gestion et la recommandation et changer le contenu visuel des "données mortes" aux "données en direct"; 3. La sélection des services d'IA nécessite des jugements complets basés sur la correspondance fonctionnelle, la précision, le coût, la facilité d'utilisation, le retard régional et la conformité des données, et il est recommandé de commencer à partir de services généraux tels que Google CloudVision; 4. Les défis courants comprennent le délai d'expiration du réseau, la sécurité clé, le traitement des erreurs, la limitation du format d'image, le contrôle des coûts, les exigences de traitement asynchrones et les problèmes de précision de reconnaissance de l'IA.

Pour réaliser la correction d'erreur de texte et l'optimisation de la syntaxe avec l'IA, vous devez suivre les étapes suivantes: 1. Sélectionnez un modèle ou une API d'IA appropriée, tels que Baidu, Tencent API ou bibliothèque NLP open source; 2. Appelez l'API via Curl ou Guzzle de PHP et traitez les résultats de retour; 3. Afficher les informations de correction d'erreur dans l'application et permettre aux utilisateurs de choisir d'adopter l'adoption; 4. Utilisez PHP-L et PHP_CODESNIFFER pour la détection de syntaxe et l'optimisation du code; 5. Collectez en continu les commentaires et mettez à jour le modèle ou les règles pour améliorer l'effet. Lorsque vous choisissez AIAPI, concentrez-vous sur l'évaluation de la précision, de la vitesse de réponse, du prix et du support pour PHP. L'optimisation du code doit suivre les spécifications du PSR, utiliser le cache raisonnablement, éviter les requêtes circulaires, revoir le code régulièrement et utiliser x

L'entrée vocale de l'utilisateur est capturée et envoyée au backend PHP via l'API MediaRecorder du JavaScript frontal; 2. PHP enregistre l'audio en tant que fichier temporaire et appelle STTAPI (tel que Google ou Baidu Voice Recognition) pour le convertir en texte; 3. PHP envoie le texte à un service d'IA (comme Openaigpt) pour obtenir une réponse intelligente; 4. PHP appelle ensuite TTSAPI (comme Baidu ou Google Voice Synthesis) pour convertir la réponse en fichier vocal; 5. PHP diffuse le fichier vocal vers l'avant pour jouer, terminant l'interaction. L'ensemble du processus est dominé par PHP pour assurer une connexion transparente entre toutes les liens.

PHP n'effectue pas directement un traitement d'image AI, mais s'intègre via les API, car il est bon dans le développement Web plutôt que dans les tâches à forte intensité informatique. L'intégration de l'API peut atteindre une division professionnelle du travail, réduire les coûts et améliorer l'efficacité; 2. Intégration des technologies clés incluez l'utilisation de Guzzle ou Curl pour envoyer des demandes HTTP, le codage et le décodage des données JSON, l'authentification de la sécurité des clés de l'API, les tâches de traitement de la file d'attente asynchrones, les tâches prenant du temps, la gestion des erreurs robuste et le mécanisme de retrait, le stockage et l'affichage d'images; 3. Les défis courants incluent le coût des API incontrôlable, les résultats de génération incontrôlables, la mauvaise expérience utilisateur, les risques de sécurité et la gestion difficile des données. Les stratégies de réponse consistent à définir des quotas et des caches utilisateur, en fournissant des conseils ProTT et une sélection multi-images, des notifications asynchrones et des invites de progrès, un stockage et un audit de contenu de la variable d'environnement clé et un stockage cloud.

PHP fournit une base d'entrée pour les modèles d'IA en collectant des données utilisateur (telles que l'historique de navigation, la localisation géographique) et le prétraitement; 2. Utilisez Curl ou GRPC pour se connecter avec les modèles d'IA pour obtenir les résultats de prédiction de taux de clics et de taux de conversion; 3. Ajuster dynamiquement la fréquence d'affichage publicitaire, la population cible et d'autres stratégies basées sur les prédictions; 4. Testez différentes variantes publicitaires via A / B et enregistrez les données et combinez une analyse statistique pour optimiser l'effet; 5. Utilisez PHP pour surveiller les sources de trafic et les comportements des utilisateurs et intégrer avec des API tierces telles que Googleads pour réaliser la livraison automatisée et l'optimisation de rétroaction continue, améliorer finalement CTR et CVR et réduire le CPC, et implémenter pleinement la boucle fermée du système publicitaire basé sur l'IA.

PHP assure l'atomicité de la déduction des stocks via les transactions de base de données et les verrous en ligne de Forupdate pour empêcher la survente élevée élevée en simultation; 2. La cohérence de l'inventaire multiplateforme dépend de la gestion centralisée et de la synchronisation axée sur les événements, combinant des notifications API / WebHook et des files d'attente de messages pour assurer une transmission fiable de données; 3. Le mécanisme d'alarme doit définir un faible inventaire, un inventaire zéro / négatif, des ventes invidables, des cycles de réapprovisionnement et des stratégies de fluctuations anormales dans différents scénarios, et sélectionner Dingtalk, SMS ou les personnes responsables par e-mail en fonction de l'urgence, et les informations d'alarme doivent être complètes et claires pour réaliser l'adaptation et la réponse rapide.
