[typecho]批量插入的做法
前言
最近想起写推特删除的插件,就往下做了点,结果发现,批量插入推文ID的时候,速度很慢,翻了下TYPECHO 关于DB的代码,发现都是自动提交事务的模式。必须得改,涉及到底层的修改(只是返回了两个私有的对象),修改之后,速度提升了不是一点半点,基本上毫秒级就能插入完成,原先要十几秒。
调整
修改home/var/Typecho/Db/Adapter/Pdo.php
,增加
public function getObject(){
return $this->_object;
}
修改home/var/Typecho/Db.php
,增加
public function getAdapter(){
return $this->_adapter;
}
使用
因为是pdo,抽象了具体的数据库实现,事务直接启动,最后提交,都是一样的操作,比如下面的代码:
$sql = "INSERT INTO ".$prefix."tabletable(id_str,stete) VALUES(?,?)";
//改了两个文件就为了取到这个
$stmt = $this->db->getAdapter()->getobject()->prepare($sql);
$stmt->bindParam(1, $id_str);
$stmt->bindParam(2, $state);
//开启事务
$this->db->getAdapter()->getobject()->beginTransaction();
for ($x=0;$x<sizeof($ids);$x++) {
$id_str=$ids[$x];
$state=$st[$x];
$stmt->execute();
}
//提交事务
$this->db->getAdapter()->getobject()->commit();
本文来自:[typecho]批量插入的做法-小码农,转载请保留本条链接,感谢!
温馨提示:
本文最后更新于 2022年03月15日,已超过 982 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
正文到此结束
- 本文标签: typecho transaction
- 本文链接: https://djc8.cn/archives/typecho-batch-insert.html
- 版权声明: 本文由小码农原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权