繁体   English   中英

如何在不使用curl和apache2的情况下在本地使用Perl CGI?

[英]How do I use a Perl CGI locally without using curl and apache2?

我想将表单提交到CGI脚本语言环境(w3c-markup-validator),但是使用curlapache太慢了,我想在另一个脚本中使用此CGI脚本超过5,000次。 目前需要一个多小时。

如何将表单直接提供给CGI脚本(我使用curl上传了文件)?

编辑:对于我需要的东西来说似乎太复杂且耗时,因此每次需要测试生成的xhtml文件时,我等待了一个半小时。 确切地说,我没有测试以下任何答案,因此问题仍然存在。

根据脚本的详细信息,您可能可以使用HTTP :: Request :: AsCGI创建伪造的CGI环境,然后使用“ do”运算符来获取CGI脚本。 但是,关于速度和可维护性,您最好的选择是将脚本工作的重要部分纳入其自己的模块中,并将CGI重写为该模块的客户端。 这样,你不必调用它作为一个CGI -你现在所谈论的将只是使用相同的模块做同样的工作,另一个程序的批处理作业,但没有CGI或Web服务器环境的方式获得。

好的,我查看了此内容的源代码,从其余所有内容中提取验证内容并不容易。 所以,这就是我想要的。

首先,沟curl 为要验证的每个文件启动新过程不是一个好主意。 您将需要编写一个驱动程序脚本,该脚本将获取URL列表,并将其提交给在localhost运行的本地服务器。 实际上,您以后可能要并行化它,因为无论如何通常都会有许多httpd进程处于活动状态。 好吧,我超越自己。

该脚本可以使用LWP,因为您要做的就是向localhost上的CGI脚本提交一些数据并存储/处理结果。 您不需要完整的WWW :: Mechanize功能。

至于validator CGI脚本,您应该将其配置为mod_perl注册表脚本 确保预加载所有必需的库。

这应该将每秒处理的文档从1.3提高到更可口。

CGI是一个非常简单的API。 它所做的只是从环境变量(对于GET请求)或从stdin(对于POST请求)读取数据。 因此,您所需要做的就是设置环境并调用脚本。 有关详细信息,请参阅文档

如果脚本使用CGI.pm,则可以通过提供'-debug'开关(在use语句中为CGI.pm)从命令行运行它,然后使您可以在stdin上发送post变量。 您可能需要稍微调整脚本才能使其正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM