问题标签 [psgi]
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如何将zip文件发送到浏览器以在PSGI中下载
我开始查看 PSGI,我知道应用程序的响应应该是三个元素的数组 ref,[code, headers, body]:
问题是如何将文件(例如 zip 或 pdf)发送到浏览器以供下载。
perl - Perl 在 linux centos 和 apache 共享主机上运行 PSGI
我在带有 cpanel 共享主机的 linux centos 上有一个 psgi 测试应用程序。如何在 PSGI 协议下调用它,例如:
我的意思是如何使 .psgi 在 PSGI 协议下运行。我希望能够在 PSGI 协议下自动运行任何 .psgi。
我知道我可以使用 plackup 命令运行它。
perl - FCGI 和 PSGI 之间的 Perl 基准测试
我对FCGI协议的了解是,第一次调用应用程序时,它会将其加载到内存中,运行它,将响应返回给服务器,完成响应但不结束应用程序,它会保持它在内存中运行,然后下一个请求将使用这个在内存中编译的应用程序副本来处理请求。
阅读有关 PSGI 协议的信息,它似乎以相同的方式工作。
我的问题是,我的假设是否正确,它们对于每秒请求的应用程序速度是相同的。
如果它们的工作方式相同,也会出现令人困惑的问题,为什么我看到 plackup 具有启用 FCGI 的命令行选项。
perl - Perl CGI::Simple 在 PSGI 下
我在一个简单的应用程序中使用 CGI::Simple,我希望它支持 PSGI,我不会使用任何现成的框架,我做了很多关于 PSGI 对 CGI::Simple 的支持的搜索,但没有找到任何CPAN 上的模块。幸运的是,我在这个站点上找到了一个名为CGI::Simple::PSGI
CPAN 上不存在的模块的人。将此模块包含在我的应用程序中是否安全,我不确定作者为什么不将其上传到 cpan 站点。我联系了模块的电子邮件,但没有得到回复。
以下是此模块的内容,以防链接更改。
perl - Perl PSGI 不会自动提供静态文件
我正在练习 Perl 和 PSGI/Plack。只是尝试简单的 PSGI 示例应用程序:
应用程序.psgi
然后运行它:
如果我将浏览器指向 /news/world 之类的任何路径:
没关系,我将 $path 变量设置为 /news/world,然后我将处理 cgi 响应。
如果我指向 logo.png 之类的静态文件,则会出现问题
我还将 $path 变量设置为 /logo.png
问题是,为什么 plakup 服务器不自动提供静态图像文件 logo.png。
我必须手动执行此操作吗?如果是这样,这是否意味着在每次请求时我都必须先 ping 文件系统,检查是否 -f $path.
这意味着我正在构建一个完整的服务器处理程序,而不仅仅是我的脚本处理程序。我不明白什么。
cgi - 在 PSGI 中传递变量
我有一个要转换为 PSGI 的 CGI 脚本。这是结果:
单击“做某事”后,我返回到同一页面(显然),但它应该打印“click_me”。这在 CGI 中有效,但由于某种原因 PSGI 没有传递这个变量。我可以打印上面定义的其他变量。所以我的@keys = param(); 似乎没有做很多事情。
perl - 如何为聚合测试获取 Test::WWW::Mechanize::PSGI 对象的“干净”克隆?
我有一个用于 Catalyst/PSGI 网站的大型测试套件,运行大约需要 40 多分钟。我已将其切换为使用聚合测试,使用Test::Aggregate::Nested,现在运行大约需要 20 多分钟。
我一直在尝试让测试套件在测试之间使用WWW::Mechanize中的 clone 方法来提高性能。
在测试之间,我正在克隆和“重置”共享$mech
对象,如下所示:
请注意,Test::WWW::Mechanize::PSGI扩展了 WWW::Mechanize。
这大大减少了运行测试所需的时间,不到 5 分钟。
但显然这还不够:我仍然需要为特定测试获取一个新对象,因为测试之间的副作用需要在某些测试脚本中手动获取一个新的 Test::WWW::Mechanize::PSGI 对象. 这又增加了几分钟的测试时间。
我认为测试之间的副作用是一个错误,并且在某些测试中获得一个新对象的需要是一个 kluge。
所以我的问题是:我还能做些什么来重置对象的状态?
angularjs - 使用 Websockets、Perl、Twiggy 和 Catalyst 重新加载安全的开发环境
我正在 Catalyst 中开发一个 PSGI 应用程序,它使用 WebSockets 在前端和后端之间进行通信。基本上我们所做的是,一旦用户会话通过身份验证,我们就打开一个到后端的 websocket,在客户端(Angular)上加载 JS 应用程序,并通过后端从/到后端检索任何请求的数据或任务websocket(使用 AnyEvent 基于事件)。
该系统运行良好,但有一个非常烦人的问题:
每次用户重新加载页面时,websocket 都会被杀死。这是我们预期会发生的事情,因为套接字是通过 JS 打开的(在页面刷新时重新加载)。对于最终的实现,这不会是一个问题(我们只是在每次页面重新加载时将用户重定向到登录页面)。但是在开发过程中,这显然是很烦人的。每次前端开发人员对 JS 做一个小改动,他都必须重新登录,等等。
我会尽量避免在 CGI 中开发整个东西,所以它可以用于开发。
有人对此有解决方案吗?是否有可以使用的特定 websocket 开发服务器?
目前 PSGI 应用程序正在 Twiggy 上运行。奇怪的是,在某些机器上它是刷新安全的,而在其他机器上则不是(相同的操作系统、twiggy、perl、催化剂版本)。
任何帮助将非常感激!
perl - 是否可以在不读取整个请求正文的情况下在 Plack::Middleware 中强制执行最大上传大小?
我刚刚将一个PageKit (mod_perl) 应用程序转换为Plack。这意味着我现在需要某种方法来强制执行Apache2::Reques t 之前处理的 POST_MAX/MAX_BODY。最简单的方法可能是将 nginx 放在应用程序前面,但应用程序已经位于HAProxy后面,我不知道如何使用 HAProxy 执行此操作。
所以,我的问题是如何在不先阅读整个请求正文的情况下在Plack::Middleware中强制执行最大正文大小?
具体来说,我关心文件上传。通过Plack::Request::Upload检查大小为时已晚,因为此时整个正文都已被读取。该应用程序将通过Starman部署,因此psgix.streaming
应该如此true
。
perl - 在 apache 中将 cgi 部署到 psgi 转换的应用程序
我在 apache 服务器中运行这个 cgi.pl 作为 http://localhost/cgi-bin/cgi.pl
但我无法在 apache 服务器中运行转换后的 psgi.pl 其显示请帮助 Internal Server Error 服务器遇到内部错误或配置错误,无法完成您的请求。请通过 admin@example.com 联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。服务器错误日志中可能提供有关此错误的更多信息。