我想提交一个表单到CGI脚本localy(W3C的标记验证器),但它使用太慢curl
和apache
,我想用这个CGI脚本5000次以上在另一个脚本。 目前它需要一个多小时。
我应该怎么做,直接给的形式向CGI脚本(我上传了文件curl
)?
编辑:这似乎是过于复杂和耗时的我需要的东西,所以我每次我需要测试我生成的XHTML文件时间等待1小时半。 在最终我没有测试下面的任何答案,所以这个问题将继续开放。
我想提交一个表单到CGI脚本localy(W3C的标记验证器),但它使用太慢curl
和apache
,我想用这个CGI脚本5000次以上在另一个脚本。 目前它需要一个多小时。
我应该怎么做,直接给的形式向CGI脚本(我上传了文件curl
)?
编辑:这似乎是过于复杂和耗时的我需要的东西,所以我每次我需要测试我生成的XHTML文件时间等待1小时半。 在最终我没有测试下面的任何答案,所以这个问题将继续开放。
根据剧本的细节,你可能能够创建一个使用假CGI环境HTTP ::支持:: AsCGI ,然后采购与“做”操作的CGI脚本。 但是,当涉及到速度和可维护性你最好的选择将是因素脚本工作的重要组成部分,变成自己的模块,并重写CGI作为该模块的客户端。 这样,你不必调用它作为一个CGI -你现在所谈论的将只是使用相同的模块做同样的工作,另一个程序的批处理作业,但没有CGI或Web服务器环境的方式获得。
OK,我看着这个东西的源代码,这是不容易的提取从所有的休息验证的东西。 所以,这里是我会的。
首先,沟curl
。 开始一个新的进程要验证每个文件是不是一个好主意。 您将需要编写驱动程序脚本,它的URL列表并将其提交到本地服务器上运行的localhost
。 事实上,你可能以后要并行这一点,因为那里通常是一堆httpd
进程还活着呢。 好吧,我得到超前了。
该脚本可以使用LWP ,因为所有你正在做的是提交一些数据给CGI脚本localhost
和存储/处理结果。 你并不需要完整的WWW ::机械化的功能。
至于validator
CGI脚本,你应该配置为mod_perl的注册表脚本 。 请确保您下载所有必要的库。
这应该提高每秒处理1.3到更多的东西可口的文件。
CGI是一个非常简单的API。 它所做的就是读取数据无论是从环境变量(GET请求),或从标准输入(POST请求)。 因此,所有你需要的是做的是设置环境并调用脚本。 请参阅有关详细信息文档 。
如果脚本使用CGI.pm,你可以通过提供“-debug”开关在命令行中运行它(到CGI.pm,在使用说明。)然后,将让您发送读取标准后的变量。 您可能必须调整脚本一点,使这项工作。