问题标签 [mod-perl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 活动状态 Perl - IOCP
我正在考虑在我们的网络相关代码之一中使用 perl 中的 IOCP。目前 Active State Perl 直到 5.10 不提供这个功能?有人知道免费模块可以在 perl 中使用像 IOCP 这样的 ASIO 功能吗?
-卡提克
perl - 如何在生产 Web 服务器上测试 Apache/mod_perl 下的 Web Perl 模块?
我们有一个设置,其中大多数代码在升级到全面生产之前以 BETA 模式部署 - 这意味着它在完整的生产环境中运行(使用生产数据库 - 通常是生产数据;和生产 Web 服务器)。我们称该阶段为 BETA 测试。
主要要求之一是 BETA 代码升级到生产必须是从 beta 到生产目录的简单“cp”命令 - 没有代码/文件名更改。
对于非 Web Perl 代码,实现无缝 BETA 测试是完全可行的(详见此处):
- Perl 程序位于生产根目录 (
/usr/code/scripts
) 下的标准位置,生产 perl 模块位于同一根目录 (/usr/code/lib/perl
) - BETA 代码具有 100% 相同的代码路径,除了 beta 根 (
/usr/code/beta/
) - 一个特殊的模块
@INC
根据脚本是从/usr/code/scripts
或调用来操作任何脚本/usr/code/test/scripts
,以包含用于 beta 脚本的 beta 库。
在我们需要对我们的 Web Perl 代码进行 beta 测试之前,此设置工作正常(设置是 EmbPerl 和 Apache/mod_perl)。
问题如下:如果生产 Perl 模块和 BETA Perl 模块具有相同的名称(例如/usr/code/lib/perl/MyLib1.pm
和/usr/code/beta/lib/perl/MyLib1.pm
),那么 mod_perl 将只能将其中一个模块加载到内存中- 我们无法意识到由于并发问题,特定网页会影响当前加载的模块版本。
抛开明显的非编程解决方案(获得一个血腥的 BETA web 服务器),出于政治/组织原因是不可行的,有什么方法可以在 Perl 或 mod_perl 中以某种方式解决这个问题?
我尝试了各种方法来卸载%INC
已列出的 Perl 模块,但问题仍然是另一个用户可能会在正确(或相当错误)的时刻加载 beta 页面并加载 beta 模块,该模块将用于我的生产页面.
perl - 我可以以普通用户身份运行我的 mod_perl 应用程序吗
我可以像在 suexec 下运行普通 CGI 应用程序一样以普通用户身份运行我的 mod_perl 应用程序吗?
perl - 如何通过 DBI 和 mod_perl 使用连接到 DB2?
我在让 DBI 的 IBM DB2 驱动程序与 mod_perl 一起工作时遇到问题。我的测试脚本是:
该脚本作为 CGI 工作,但不在 mod_perl 下。我在 apache 的错误日志中得到这个错误:
首先,为什么要使用 ODBC?安装了本机 DB2 驱动程序(因此它作为 CGI 工作)。
在 RHEL5 下运行 Apache 2.2.3、mod_perl 2.0.4。
这家伙和我有同样的问题:http: //www.mail-archive.com/dbi-users@perl.org/msg22909.html 但我不知道他是如何解决的。mod_php4 和 mod_perl 有什么关系?
任何帮助将不胜感激,我对谷歌没有运气。
更新:
正如 james2vegas 指出的那样,问题与 PHP 有关:我一起禁用 PHP 我得到了一个不同的错误:
我认为此错误与未正确设置环境变量有关,即DB2INSTANCE
. 但是,我无法关闭 PHP 来解决这个问题(一些遗留应用程序需要它)。所以我现在有两个问题:
- 如何在不一起禁用 PHP 的情况下解决原始问题?
- 如何解决环境问题?
我已经使用SetEnv
and PerlSetEnv
in正确设置了 DB2INSTANCE、DB2_PATH 和 SQLLIB 变量httpd.conf
,但没有运气。
注意:我已经编辑了代码以确定问题是否与全局变量持久性有关。
perl - mod_perl 内存泄漏
我最近发现我们的一个网站有内存泄漏,这很奇怪,因为它发生的突然。我使用 GTop 来测量每个进程的内存大小,它告诉我每个请求的实际值大约是 65 MB(在服务器上),另外还有 5 MB 共享。
我尝试在 mod_perl 的性能调整文章中指出的 startup.pl 文件中预加载模块。如果事实上共享内存减少到 3.7 MB,什么都没有发生,在这种情况下,我认为我的应用程序在执行任何代码行之前正在泄漏内存我测量了内存只是为了发现总值实际上是 64 MB,我的问题是:每个进程是否有默认的内存预分配?有配置问题吗?mod_perl 是否泄漏内存?
非常感谢。
perl - 在 mod_perl 下使用 Perl 跟踪“工作”
我在 mod_perl 下运行了这个项目,显示了主机上的一些信息。此页面上有一个带有下拉菜单的文本框,允许用户 ping/nslookup/traceroute 主机。输出显示在文本框中,如tail -f
.
它在 CGI 下工作得很好。当用户请求 ping 时,它会对服务器进行 AJAX 调用,实际上它会在服务器上启动 ping,并将输出发送到临时文件。然后后续的 ajax 调用将“跟踪”文件,以便更新输出,直到 ping 完成。作业完成后,临时文件将被删除。
但是,在 mod_perl 下,无论我做什么,我都可以阻止它创建僵尸进程。我已经尝试了一切,双叉,使用IPC::Run
等。最后,在 mod_perl 下不鼓励系统调用。
所以我的问题是,也许有更好的方法来做到这一点?是否有 CPAN 模块可用于创建可在 mod_perl 下工作的命令行作业和拖尾输出?我只是在寻找一些建议。
我知道我可能会创建某种“工作”守护程序,我用详细信息发出信号并从中获取更新。它会运行命令并跟踪它们的状态等。但是有没有更简单的方法?
提前致谢。
perl - mod_perl 下 '\' 的奇怪行为
我在 mod_perl 下运行的脚本中有以下内容
它将以下内容输出到我的日志文件中:
$1 已知为空。这是 mod_perl2 中的错误还是我缺少的其他东西?
perl - POSIX 模块的问题
将我的 mod_perl 站点从 Linux 主机移到 FreeBSD 后,日志文件中出现以下错误:
您的供应商尚未定义 POSIX 宏 SIGRTMIN,用于 ../../lib/POSIX.pm(自动拆分为 ../../lib/auto/POSIX/SigRt/_init.al)第 993 行\n
该脚本仅导入 POSIX 并利用一些功能(ceil 等)
我该如何解决这个问题?
perl - mod_perl 处理包含路径的方式与 cgi 不同?
我有一个用 perl 编写并作为 CGI 执行的脚本。它工作正常。最近我将 mod_perl 模块安装到 apache 中,并使用了 PerlModule ModPerl::Registry 指令。
我读过使用这个我不需要修改我的 cgi perl 代码。(我总是使用严格的编译指示,所以不要担心未初始化的全局变量和类似的东西)。
我的原始脚本仍然按预期工作,除了一件事,我包含在 require() 函数中的文件不再可以解析。
脚本.cgi:
脚本.perl
目录结构是这样工作的:
$ ls
script.cgi script.perl 包括/
$ ls 包括/
函数.cgi 函数.perl