网站快照
流 动 当 前 网 页 不 支 持 你 正 在 使 用 的 浏 览 器 . 为 了 正 常 的 访 问 , 请 升 级 你 的 浏 览 器 . 流 动 生 活 就 是 一 个 流 动 的 过 程 。
搜 索 关 键 字 搜 索 首 页 关 于 本 站 启 用 新 站 作 者 : D o n 时 间 : J u l y 2 , 2 0 2 2 分 类 : 生 活 随 笔 评 论 博 客 已 经 断 更 好 久 了 , 上 一 篇 文 章 已 经 是 1 9 年 了 。
账 号 密 码 都 不 记 得 了 , 重 置 t y p e c h o 密 码 搞 了 快 半 个 小 时 。
2 0 0 9 年 毕 业 , 投 身 到 互 联 网 行 业 。
2 0 1 1 年 出 于 兴 趣 , 搭 建 本 博 客 , 记 录 自 己 的 一 些 经 历 。
当 时 想 要 注 册 l i u d o n . c o m 而 不 能 得 , 只 能 入 手 l i u d o n . o r g , 后 面 又 入 手 了 l i u d o n . x y z 。
十 年 间 , 变 化 万 千 。
不 曾 想 , l i u d o n . c o m 域 名 竟 然 被 我 拿 到 了 , 详 细 经 过 。
手 中 有 了 三 个 域 名 , 搞 了 两 套 博 客 , 感 兴 趣 的 可 以 看 博 客 架 构 说 明 。
后 续 更 新 全 部 迁 往 新 站 l i u d o n . c o m , 本 站 归 档 不 再 更 新 。
L a v a r e l E l o q u e n t O R M 常 驻 进 程 下 的 内 存 溢 出 问 题 作 者 : D o n 时 间 : J a n u a r y 8 , 2 0 1 9 分 类 : 代 码 分 析 评 论 L a r a v e l 的 E l o q u e n t O R M 提 供 了 漂 亮 、 简 洁 的 A c t i v e R e c o r d 实 现 来 和 数 据 库 交 互 。
每 个 数 据 库 表 都 有 一 个 对 应 的 「 模 型 」 用 来 与 该 表 交 互 。
你 可 以 通 过 模 型 查 询 数 据 表 中 的 数 据 , 并 将 新 记 录 添 加 到 数 据 表 中 。
业 务 里 使 用 了 O R M 来 进 行 数 据 库 操 作 , 有 个 c r o n 运 行 一 段 时 间 后 就 报 内 存 溢 出 的 错 误 , 之 前 一 直 没 时 间 彻 底 解 决 , 这 次 有 时 间 彻 底 搞 清 楚 了 。
代 码 类 似 : $ c a p s u l e = n e w C a p s u l e ; f o r e a c h ( $ d a t a b a s e [ $ e n v ] a s $ n a m e = > $ c o n f ) / / 设 置 全 局 静 态 可 访 问 $ c a p s u l e s e t A s G l o b a l ( ) ; / / 启 动 E l o q u e n t $ c a p s u l e b o o t E l o q u e n t ( ) ; w h i l e ( 1 ) c a t c h ( E x c e p t i o n $ e ) i f ( ! $ d a t a L i s t ) f o r e a c h ( $ d a t a L i s t a s $ d a t a ) } 断 点 调 试 , 发 现 每 查 询 一 次 数 据 , 内 存 就 会 增 长 3 M 左 右 , 运 行 3 0 次 左 右 , 就 会 报 内 存 溢 出 。
怀 疑 是 不 是 O R M 这 里 会 记 录 每 次 的 查 询 结 果 , 搜 索 了 一 下 , 发 现 还 真 有 类 似 功 能 。
L a r a v e l E l o q u e n t d i s p l a y q u e r y l o g 最 终 实 现 代 码 : $ c a p s u l e = n e w C a p s u l e ; f o r e a c h ( $ d a t a b a s e [ $ e n v ] a s $ n a m e = > $ c o n f ) / / 设 置 全 局 静 态 可 访 问 $ c a p s u l e s e t A s G l o b a l ( ) ; / / 启 动 E l o q u e n t $ c a p s u l e b o o t E l o q u e n t ( ) ; w h i l e ( 1 ) c a t c h ( E x c e p t i o n $ e ) i f ( ! $ d a t a L i s t ) f o r e a c h ( $ d a t a L i s t a s $ d a t a ) } P H P 里 $ _ G E T / $ _ P O S T 变 量 的 u r l d e c o d e 问 题 作 者 : D o n 时 间 : D e c e m b e r 2 0 , 2 0 1 8 分 类 : 代 码 分 析 评 论 $ _ G E T 里 的 变 量 全 都 会 自 动 进 行 u r l d e c o d e 。
$ _ P O S T 里 的 变 量 只 有 C o n t e n t T y p e : a p p l i c a t i o n / x w w w f o r m u r l e n c o d e d 下 会 自 动 进 行 u r l d e c o d e 。
r a d i o 实 现 点 击 选 中 , 再 点 击 取 消 选 中 的 效 果 作 者 : D o n 时 间 : S e p t e m b e r 3 0 , 2 0 1 8 分 类 : 代 码 分 析 评 论 $ ( i n p u t [ t y p e = r a d i o ] ) . o n ( c l i c k , f u n c t i o n ( ) e l s e } ) ; 点 击 一 直 选 中 不 了 , 打 印 s t a t e 字 段 值 一 直 为 t r u e 。
想 到 可 能 是 r a d i o 原 生 c l i c k 事 件 搞 的 鬼 , 搜 索 一 番 , 找 到 解 决 方 案 。
最 终 代 码 : $ ( i n p u t [ t y p e = r a d i o ] ) . o n ( m o u s e d o w n , f u n c t i o n ( ) ) . o n ( c l i c k , f u n c t i o n ( ) ) ; j q u e r y r a d i o 没 选 中 , 点 击 后 , 选 中 ; 选 中 后 , 点 击 , 不 再 选 中 ; 让 L a v a r e l E l o q u e n t O R M 支 持 m o n g o d b 数 据 库 作 者 : D o n 时 间 : A u g u s t 1 0 , 2 0 1 8 分 类 : 代 码 分 析 评 论 L a r a v e l 的 E l o q u e n t O R M 提 供 了 漂 亮 、 简 洁 的 A c t i v e R e c o r d 实 现 来 和 数 据 库 的 互 动 。
每 个 数 据 库 表 会 和 一 个 对 应 的 「 模 型 」 互 动 。
组 件 说 明 业 务 侧 还 在 用 P H P 5 . 3 , c o m p o s e r . j s o n 文 件 内 容 如 下 : } 实 际 安 装 的 版 本 如 下 。
组 件 版 本 i l l u m i n a t e / d a t a b a s e v 4 . 1 . 3 0 j e n s s e g e r s / l a r a v e l m o n g o d b v 1 . 3 . 2 使 用 方 式 : 配 置 文 件 c o n f / d a t a b a s e . p h p 新 增 m o n g o d b 配 置 。
a r r a y ( d r i v e r = > m o n g o d b , h o s t = > 1 0 0 . 9 8 . 1 7 3 . 1 3 , p o r t = > 5 5 6 6 , d a t a b a s e = > b i g d a t a , ) , ) 自 动 加 载 数 据 库 , 新 增 m o n g o d b 数 据 库 类 型 。
i n c l u d e c o n f / d a t a b a s e . p h p ; $ c a p s u l e = n e w C a p s u l e ; / / 支 持 m o n g o d b 数 据 库 , 如 果 n a m e 是 m o n g o d b , 交 给 J e n s s e g e r s \ \ M o n g o d b \ \ C o n n e c t i o n 来 处 理 $ c a p s u l e g e t D a t a b a s e M a n a g e r ( ) e x t e n d ( m o n g o d b , f u n c t i o n ( $ c o n f i g ) ) ; f o r e a c h ( $ d a t a b a s e [ $ e n v ] a s $ n a m e = > $ c o n f ) / / 设 置 全 局 静 态 可 访 问 $ c a p s u l e s e t A s G l o b a l ( ) ; / / 启 动 E l o q u e n t $ c a p s u l e b o o t E l o q u e n t ( ) ; m o d e l 继 承 J e n s s e g e r s \ \ M o n g o d b \ \ M o d e l . 上 面 是 按 网 上 找 到 的 资 料 配 置 的 , 然 后 跑 起 来 后 报 P H P F a t a l e r r o r : C a l l t o a m e m b e r f u n c t i o n c o n n e c t i o n ( ) o n a n o n o b j e c t i n / w e b / x x x / v e n d o r / i l l u m i n a t e / d a t a b a s e / I l l u m i n a t e / D a t a b a s e / E l o q u e n t / M o d e l . p h p o n l i n e 2 8 1 0 的 错 误 。
断 点 定 位 了 半 天 , 才 解 决 掉 问 题 , 这 里 记 录 一 下 。
先 看 下 2 8 1 0 行 的 代 码 是 什 么 。
2 8 0 8 p u b l i c s t a t i c f u n c t i o n r e s o l v e C o n n e c t i o n ( $ c o n n e c t i o n = n u l l ) 2 8 0 9 注 意 这 里 用 的 是 s t a t i c : : $ r e s o l v e r , 关 于 p h p 的 s t a t i c 和 s e l f 的 区 别 可 以 参 考 这 篇 文 章 , 这 里 不 做 过 多 描 述 。
p h p 中 s e l f 与 s t a t i c 的 区 别 解 决 方 法 : 修 改 v e n d o r \ \ j e n s s e g e r s \ \ m o n g o d b \ \ s r c \ \ J e n s s e g e r s \ \ M o n g o d b \ \ M o d e l . p h p 文 件 , 注 释 下 面 这 行 代 码 。
p r o t e c t e d s t a t i c $ r e s o l v e r ; 1 2 3 4 . . . 7 1 后 一 页 » © 2 0 2 5 流 动 . 由 T y p e c h o 强 力 驱 动 . 京 I C P 备 1 3 0 2 9 5 2 2 号 .