La colonne tutorielle suivante de thinkphp vous présentera les événements de requête, les opérations de transaction et la surveillance SQL des opérations de base de données ThinkPHP. J'espère qu'elle sera utile aux amis dans le besoin. !
Événements de requête
Événements de requête (V5.0.4+)
À partir de la version 5.0.4+, la prise en charge des événements d'opération CURD de la base de données a été ajoutée, notamment :
Requête event Seules les méthodes find, select, insert, update et delete sont prises en charge.
Enregistrer l'événement
Utilisez la méthode suivante pour enregistrer l'événement de requête de base de données
Query::event('after_insert','callback'); Query::event('before_select',function($options,$query){ // 事件处理 return $result; });
Opération de transaction
Si vous utilisez le traitement des transactions, le moteur de base de données doit prendre en charge le traitement des transactions. Par exemple, MyISAM de MySQL ne prend pas en charge le traitement des transactions et nécessite l'utilisation du moteur InnoDB.
Utilisez la méthode de transaction pour effectuer des transactions de base de données. Lorsqu'une exception se produit, elle sera automatiquement annulée, par exemple :
Contrôler automatiquement le traitement des transactions
Db::transaction(function(){ Db::table('think_user')->find(1); Db::table('think_user')->delete(1); });
Contrôle manuel des transactions
// 启动事务Db::startTrans();try{ Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); }
Notez que pendant la transaction opérations, assurez-vous que votre base de données La connexion est la même.
Écouter SQL
Si vous activez le mode débogage de la base de données, vous pouvez exécuter n'importe quelle commande sur la base de données. Pour surveiller les opérations SQL, utilisez la méthode suivante :
Db::listen(function($sql, $time, $explain){ // 记录SQL echo $sql. ' ['.$time.'s]'; // 查看性能分析结果 dump($explain); });
Par défaut, si aucune opération de surveillance n'est enregistrée, ces exécutions SQL seront enregistrées dans les journaux selon différents types de journaux.
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!