【问题标题】:Does plperlu reload Perl modules if they change? [duplicate]如果更改,plperlu 是否会重新加载 Perl 模块? [复制]
【发布时间】:2010-10-08 10:41:54
【问题描述】:

如果我在 plperlu 中写了一些东西,并且它使用了一个 Perl 模块(例如 MyModule::Foo),那么该模块何时会被重新加载?它是否会像 mod_perl 的 Apache2::Reload 一样跟踪它们,以便触摸会导致重新解释?

【问题讨论】:

  • 你昨天不是问过这个问题吗? stackoverflow.com/questions/558519/…
  • 我问了两个问题,因为一个已经回答并且可能与另一个无关,我想我应该接受答案并改写。区别在于是否保留 Perl 代码和是否保留 Perl 解释器。
  • 同一个问题。解释器保持模块加载,所以如果解释器保持加载,模块也会加载。
  • 那么他们什么时候重新加载,如果他们改变了?
  • Leon,你应该提交这个作为答案,这对我来说是新信息,我会修改你的。

标签: perl postgresql plperl


【解决方案1】:

根据 Leon 的评论,经过一些测试后,显然 MyModule::Foo 从第一次成功使用时就保留在内存中,但仅在当前进程中(即数据库句柄)。

如果在编译它(当你定义一个使用它的函数时它会抱怨)或使用它(例如当你从你的函数中选择时)出现错误,它会重新加载它。但是,我看不出有一种方法可以在它成功运行后强制它在进程中重新加载,即使通过调用模块中的另一个子程序也会出错。

此外,如果您通过 Apache::DBI 访问 PostgreSQL,这意味着您的缓存句柄不会获取模块更改,除非您断开所有缓存句柄。

所以我想没有办法在进程中强制检查,例如 Apache2::Reload...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-10
    • 2016-01-24
    • 2014-06-16
    • 2011-06-25
    • 2018-10-20
    • 1970-01-01
    • 2011-08-27
    • 2022-01-25
    相关资源
    最近更新 更多