请教一下关于 PHP SQLite3 的几个问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CNCCTV
V2EX    PHP

请教一下关于 PHP SQLite3 的几个问题

  •  
  •   CNCCTV 2015-09-03 06:30:59 +08:00 4255 次点击
    这是一个创建于 3782 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想用 SQLite3 来做保存访问日志,但是有些问题如下:

    根据这个( http://www.php.net/manual/zh/sqlite3.open.php )官方的说明是提供设置数据库密码的,但是在实际测试中发现,

    class MyDB extends SQLite3 { function __construct () { $this->open ('mysqlitedb.db', SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE , '123456789'); } }

    数据库根本就没有被设置密码,请问怎么才能设置数据库密码?

    如果要改数据库密码,怎么去修改?

    最后一个问题是,看介绍说 SQLite3 支持多线程的,但是只能一个线程写入数据库,这应该怎么做才能在大量数据要写入的情况下,怎么才可以高效快速完成呢?

    21 条回复    2015-09-04 19:39:26 +08:00
    cxbig
        1
    cxbig  
       2015-09-03 06:36:42 +08:00
    SQLite3 这种轻量级的 DB 要啥安全配置。。。
    要是讲究安全性请考虑 MySQL 、 MariaDB 、 PostgreSQL
    abelyao
        2
    abelyao  
       2015-09-03 07:55:47 +08:00 via iPhone
    大量数据写入的真心不要选择 SQLite 啊啊啊…
    unity0703
        3
    unity0703  
       2015-09-03 11:55:32 +08:00
    免费版 SQLite 不支持加密,你可以自己对整个数据库文件加密,读的时候再自己解密
    mathgl
        4
    mathgl  
       2015-09-03 11:59:26 +08:00
    sqlite3 不需要密码。

    如果是高并发写入,不要用 sqlite3
    CNCCTV
        5
    CNCCTV  
    OP
       2015-09-03 14:27:05 +08:00
    @mathgl 那用什么来做好呢?日志记录,是长期记录的,主要是用来做统计数据用的,时间长了,内容量就相当大了,不可能用 MySQL 来做吧?
    neoblackcap
        6
    neoblackcap  
       2015-09-03 14:30:11 +08:00
    @CNCCTV 日志按道理不是上专门的日志服务器就好了吗?我们正在使用 logentries 的日志服务,感觉不错,而且还提供了 S3 的自动存档服务
    mathgl
        7
    mathgl  
       2015-09-03 14:32:20 +08:00
    @CNCCTV

    http://www.sqlite.org/whentouse.html

    看看你的应用场景是否符合上述的情况,如果是,就可以用,如果不是,未必是最合理的使用。
    zhuangzhuang1988
        8
    zhuangzhuang1988  
       2015-09-03 15:01:10 +08:00
    第一个:
    官方说明了 "If the build includes encryption, then it will attempt to use the key.", (PHP 5 >= 5.3.0 )
    看看是不是不符合.
    第二个:
    换掉 sqlite3.
    master
        9
    master  
       2015-09-03 15:09:42 +08:00
    记录日志这样的高并发写行为, I/O 操作本身要尽可能简单才是。
    轻的日志基于文本,重的基于日志服务器。

    如果说担心文件体量问题,认为 mysql 不合适,那 sqlite 就更不合适了,
    sqlite 还加密,那完全就是本末倒置了。
    realpg
        10
    realpg  
    PRO
       2015-09-03 17:59:14 +08:00
    MYSQL 都不合适 SQLITE 能合适……
    CNCCTV
        11
    CNCCTV  
    OP
       2015-09-03 18:42:53 +08:00
    @zhuangzhuang1988 我的 php 是 5.6.9,怎么换掉 sqlite3 ?
    CNCCTV
        12
    CNCCTV  
    OP
       2015-09-03 18:44:39 +08:00
    @master 原来我是用 json 做的。
    Khlieb
        13
    Khlieb  
       2015-09-04 01:19:21 +08:00 via Android
    @cxbig @abelyao @master SQLite 用在普通的的应用程序或者简单的 Web app 开发上倒是可行的
    abelyao
        14
    abelyao  
       2015-09-04 01:32:52 +08:00
    @Khlieb 没人说不行吧?问题是楼主要用于日志记录,而且是大数据量的写入,而且还要安全性
    CNCCTV
        15
    CNCCTV  
    OP
       2015-09-04 01:40:13 +08:00
    @abelyao 不是所有日志都写在一个 db 的,是分类和按日期的单独的 db ,至于什么要用密码,是因为不希望被别人可以随便查看。
    abelyao
        16
    abelyao  
       2015-09-04 01:41:56 +08:00
    @CNCCTV 理解你的需求,只是 SQLite 做这事真的不合适。
    CNCCTV
        17
    CNCCTV  
    OP
       2015-09-04 01:45:09 +08:00
    @abelyao 除了 json 和文件(不考虑日志服务器),没有更好的方式了吗?
    abelyao
        18
    abelyao  
       2015-09-04 01:54:26 +08:00
    @CNCCTV

    日志的记录,除了时刻的记录之外,还需要考虑索引、日后查看等功能,如果你单独按照日期去划分,那如果我想看某个时间段内、 IP 地址为 XXX 的访问记录,多文件的日志、或者 JSON 格式,检索性能能否满足你?

    相对的,日志这东西需要你切合实际的访问量、写入量、查看频率、对查看的效率要求,来选一种最合适的,如果你说你每天写入几千条记录,但检索频率高,我不认为文件存储会是一个好办法;如果你说每天写入 100W 条记录、几个月才检索一次,那显然放数据库的话、数据库压力也大。

    当你写入量也达到高要求了、检索也达到高需求了,就乖乖考虑日志服务器吧,或者专门的第三方日志服务。说白了,根据实际需求决定,脱离实际的“伪需求”都只是空谈。
    ljbha007
        19
    ljbha007  
       2015-09-04 08:43:57 +08:00
    @CNCCTV 换 mysql 都比 sqlite 适合干这事啊
    ljbha007
        20
    ljbha007  
       2015-09-04 08:47:17 +08:00
    @CNCCTV sqlite 也有加密的第三方库 但是一个是商用要收费 一个是会增加 CPU 负担

    https://www.zetetic.net/sqlcipher/
    https://www.sqlite.org/see/doc/trunk/www/index.wiki

    其中 sqlicipher 有 php 支持 微信就是用的这个的 C++版本
    https://www.zetetic.net/sqlcipher/documentation/

    see 没用过不知道
    CNCCTV
        21
    CNCCTV  
    OP
       2015-09-04 19:39:26 +08:00
    @ljbha007 我去 sqlite 官方网下了源码,请问一下怎么自己写加密模块?
    还有,我能不能修改多线程模式,允许所有线程插入新数据?(因为是日志,就不考虑是否重复内容了。)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2829 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 03:34 PVG 11:34 LAX 19:34 JFK 22:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86