- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经竭尽全力在网络上找到这个问题的答案。我正在尝试在 Windows 上安装 mod_perl,但有很多死胡同。
我有一组网络应用程序在我公司的本地网络中用于数据库和文件系统接口(interface)。 Web 服务器使用 DBI
、DBD::mysql
和 CGI
运行 Apache 2.2 和 ActivePerl 5.16。客户端使用 CGI 参数通过对 Perl 脚本的 AJAX 调用 (jQuery.getJSON
) 获取动态内容。流量非常少 - 只有 4 个左右的用户,并且一次只有几个查询。
我遇到的问题是延迟对于这些应用程序的性质来说是 Not Acceptable 。延迟一般在400ms左右,都是等待时间。我已经尝试过越来越简单的 Perl 脚本,并且相信所有的延迟都是 Perl 解释器造成的。我研究过 FastCGI,但据我了解,这主要涉及高流量,这不是我的问题:这是每个低流量调用的开销。因此,Apache 嵌入式 Perl 解释器(据我所知,mod_perl 是)似乎可以解决我与开销相关的延迟问题。
我找到的用于为我的设置安装 mod_perl 的所有资源都涉及服务器 theory5x.uwinnipeg.ca
以前由他运行,现在在他去世后不存在了。 ActivePerl ppm 没有任何内置的 mod_perl 包和 the website显示所有构建失败列表。
Here是一个 ActiveState 社区帖子,解释了为什么没有 ppm。
我确实找到了 this resource除了 Strawberry Perl,它似乎包含了所有缺失的部分。
所以我认为唯一的方法是从源代码安装,但我不知道如何做到这一点。我对 Linux 的熟悉程度为零,而且似乎大部分内容都是针对它的。更糟糕的是,我有一个 64 位 Windows XP 和一个要安装它的 Windows Server。
我想到的另一件事是,也许我需要安装某种发行版,如 XAMPP,而不是自己将所有部分组合在一起。我会很紧张现在改变路线并冒着破坏我的工作但缓慢的应用程序的风险
最佳答案
Is mod_perl even what I'm looking for?
我希望不会。
mod_perl
有问题。您的 Apache
、mod_perl
和 perl
都需要使用兼容的编译器和架构构建,以便它们都可以在运行时链接。当您使用 mod_perl 时,将不会运行带有 64 位 perl 的 32 位 Apache。根据我的经验,mod_perl
还应该根据 特定版本 的 Apache
和 perl
的头文件进行编译。假设您正确地混合了所有这些秘诀,您现在运行的 Web 服务器可能会因编写不当的 perl 脚本而崩溃。但从好的方面来说,这比普通的 CGI 更有效。
在这种疯狂的几年之后,FastCGI 被发明了。通过作为持久但独立的进程运行,Web 服务器能够实现 mod_perl(或 mod_PHP 或 mod_python)的效率,而无需需要二进制兼容性或稳定性风险。想想自由!一个 Apache 模块,只关心与其 Apache 主机的二进制兼容性,并且可以将任务分包给 Perl、Python、C 甚至 Visual Basic。 (我只是有一个邪恶的想法,想尝试用 Forth 或 Lisp 做网络服务,但那太疯狂了。)
在 linux 发行版(或其他固定的 XAMPP 堆栈)上运行可以使 mod_perl 的设置和维护更容易,因为他们会将它分发到一个包中,该包已被编译以与他们提供的包一起使用Apache 和 Perl。不幸的是,如果您想使用非“官方”发行版的 Apache 或 perl 版本运行,请准备好自己动手做。即便如此,发行版的软件包并不能缓解运行 mod_(选择语言)时固有的稳定性问题。
无论如何,在您启动并运行新配置之前,需要修改现有的 CGI 脚本。您可以选择将它们重写为 mod_perl、FastCGI 或 PSGI/Plack 标准。如果您选择重写为 PSGI/Plack 标准,那么您就可以不太关心 Web 服务器当前或 future 配置的细节。
How do you install it in a post Randy Kobes world?
您问题中的最后一个链接似乎是正确的。你有宗教信仰还是PHB基于理由更喜欢 ActivePerl 而不是 StrawberryPerl?最后,mod_perl 要求它是针对您的特定版本 的Apache 和您的特定版本 的perl 构建的。这将涉及您自己编译它,其他人打包多个 Apache/perl 版本组合的版本,或者其他人打包一个版本并要求您使用他们首选的 Apache 和 perl 版本。
如果您选择 mod_perl 路线并且稍微相信服务器软件应该保持最新(XP?认真的?),那么请准备好自己推出或信任您的第 3 方让您保持最新。当然,如果您是一个肇事逃逸的开发人员,那么这将大大释放您的选择...
tl-dr:
FastCGI 是您的 friend 。特别是如果您运行的是 Windows 并且希望使服务器软件保持最新。
mod_perl 在有负责任的发行版或负责任的开发人员支持且乐于从其源代码构建它时效果最佳。 ...反复。
关于windows - mod_perl 是我要找的吗?快速CGI? PSGI/普拉克?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31009297/
嗨,我是一名学生,正在实习。不幸的是,我的公司要我用 C 编写 CGI 程序。我不知道他们为什么要使用它。无论如何,我必须在接下来的 2 个月内学习并应用它。我如何以及如何学习 CGI 编程。我有 2
CGI 脚本应该可以访问由 Web 服务器设置的环境变量列表。他们的名字是什么? 最佳答案 有关 CGI 规范,请参阅 RFC 3875,其中包含您需要的所有信息。 :-) 来自 RFC: met
CGI 是通用网关接口(interface)。顾名思义,它是所有事物的“通用”网关接口(interface)。从名字上看,它是如此琐碎和幼稚。我觉得我明白了这一点,每次遇到这个词都有这样的感觉。但坦白
我试图在 uhttpd 服务器 上执行 Cgi-Cpp 程序,该服务器运行 OpenWRT 安装。 Cgi 文件是 /www/cgi-bin/sample.cgi 并且也有执行权限。我正在尝试使用 H
我在目录下有一个 cpanel 帐户: /home/username/ 和一个文件: /home/username/public_html/ 这是index.php 其中包含:
我正在尝试修改我的 EasyPHP 以在 CGI 模式下运行。 根据此链接:http://www.easyvitools.com/phpserial/php_ser_reference.html我必须
有没有办法阻止 lighttpd 将 POST 缓冲到 CGI 可执行文件? 在我看来,所有请求在转发到 CGI 可执行文件之前都已完全缓冲在磁盘上,这使我无法以基于流的方式处理输入。 澄清一下,我只
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
这个问题在这里已经有了答案: Why does my system call to another CGI script work on the command line but not when
我正在设计一个应用程序,它将由 3-4 个服务组成,这些服务作为单独的进程运行并通过合适的 IPC 链接。该系统将有一个网络界面,我想使用那里的任何网络服务器。 应该在某个 URL 下访问 Web 界
这更多是为了理解 web 应用程序中的请求-响应机制。客户端向 Web 应用程序发送请求 (GET/POST)。 Web 应用程序有一个正在运行的应用程序服务器,该服务器用作应用程序特定程序的容器。我
这个问题在这里已经有了答案: Why does my system call to another CGI script work on the command line but not when
我遇到了这个问题:当我访问 URL“bobbabr.org”时,这是正常的,但是当我访问子域“ibobba.bobbabr.org”时,我被重定向到“/cgi-sys/defaultwebpage.c
我在虚拟机上运行的 Win 2k8 R2 上安装了 Mercurial 1.8.1、Python 2.6.6。我试过从 msi、源和使用 tortisehg 安装。命令行 Hg 工作正常,但在运行 h
我正在使用 cgi-bin 并显示一张 map ,其中包含来自 Postgres 数据库的一些数据。 但是,我需要引入一个输入,用户可以在其中选择一个日期,这个日期将从数据库中过滤结果。 我有输入并通
我目前正在尝试为我在带有 Ubuntu 的虚拟机上运行的实际本地网页创建一个简单的登录页面。 我创建了 LoginPage.html在位置 /var/www/html . 然后 HTML 文件调用 l
有谁知道如何配置 lighttpd 来处理普通的 CGI 可执行文件,在这种情况下是用 C 编写的?我已经编译了一个测试程序(test.cgi)并将它放在$HOME/public_html/cgi-b
我有一个 scriptA.cgi,它调用 scriptB.cgi。 scriptB.cgi 需要一个参数。 我都试过了在我尝试过的 scriptA.cgi 中: `perl -l scriptB.cg
我正在尝试让 Python、cgi 模块、ajax/javascript 组合工作。由于我的服务器访问的性质(基本上是租用的网站空间),我无法安装 django 或任何其他网络框架之类的东西。我现在坚
我在 Ubuntu 服务器上安装了标准的 Apache2。默认设置使用 ScriptAlias 将 /cgi-bin/ 引用到 /usr/lib/cgi-bin/。如果我将 Python CGI 脚本
我是一名优秀的程序员,十分优秀!