Perl CGI 脚本根据运行返回不同的结果

Pau*_*han 5 apache perl cgi

我有一个 Perl CGI 脚本,它显然随机地发出不同的 HTML。没有任何输入改变。例如,我将运行wget两次并得到两个不同的结果。CGI 由同样不会改变的开发数据库提供支持。

我有一个调试语句,它通知我从数据库返回到脚本中的元素数量相同。

坦白说,我很困惑。逻辑、DB 和输入不会改变,但输出会。

http 服务器是 Ubuntu 10.04 上的 apache2。Perl 版本是 perl 5.10。

编辑:每当我从服务器上的命令行运行它时,输出都是正确的。

编辑 2:一些糟糕的运行看起来像是脚本的先前版本。我不认为Apache 是缓存 CGI,但它似乎可能正在抓取过时的缓存版本......

Gra*_*ean 5

您的 CGI 脚本是使用 Apache 的标准 CGI API 运行的,还是使用 Apache::Registry(或 Apache2 中的 ModPerl::Registry)CGI 仿真层在 mod_perl 下运行它?

我已经看到了与您描述的效果类似的效果,这是由 mod_perl 的 CGI 仿真的工作方式造成的。详细信息在此处讨论

一种解决方法是使用在脚本开头声明的任何“全局”变量,并使用“my”并将关键字“my”更改为“our”。

当然,您的问题可能完全不同 - 如果没有更多信息,很难说。