【发布时间】:2011-01-12 14:57:25
【问题描述】:
我有一个使用 Parse::RecDescent 创建的解析器的 Web 应用程序。应用程序的几个部分都需要一个解析器对象,并且由于解析器占用了相当多的内存,所以到目前为止我已经将解析器对象视为一个单例。这在纯 CGI 环境中运行良好,因为同一对象一次只解析一个表达式。但是,我不确定在同一对象解析器同时解析多个字符串的环境中运行时这是否仍然有效。
例如,如果我尝试在 FastCGI 下运行应用程序,如果两个请求同时使用相同的解析器对象解析为不同的字符串,会不会成为问题?
如果需要,我可以更改应用程序,使解析器不再是单例,但我不希望这样做,因为当前的解决方案更简单。
【问题讨论】:
-
FastCGI 真的在不同的线程中使用相同的解释器执行相同的 Perl 代码吗?我认为“快速”部分只是意味着服务器可以在对同一页面的单独调用中重用解释器。
-
这对于 FastCGI 案例来说是一个非常有效的观点。我还没有在任何应用程序中使用过 FastCGI,所以我不能肯定。当我想到它时,似乎很有可能当时只有一个请求将由一个 Perl 解释器处理。如果是这样,我的潜在问题就会消失,我会很开心。
标签: perl parse-recdescent