问题标签 [plack]
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 - 为什么要提高 plackup(或 starman)的内存使用量?
我有这个简单的 PSGI 应用程序 (app.psgi)。
我被请求了上述 1000 次,并且内存使用量增加了。根据服务器的启动方式,得到:
plackup
- 内存使用量在前 3 个请求时增加,并在接下来的 997 个请求中保持不变plackup -r
- 内存使用量随机增加(不是每次请求)4k。starman
- 像上面一样,内存使用量随机增加 4k,但速度较慢
问题是:
- 为什么要提高内存使用率?泄漏在哪里,以及如何实现恒定的内存使用(尤其是在 starman 上),因为我不希望长期内存不足。(好的,可以定义例如 --max-requests 100),但这不是内存使用的答案。
- 或者- 我的例子有什么问题?
如果有人也想测试这个 - 这是我的抓取脚本:
我的结果:
所以,
- 为什么要
plackup
提出前 3 个请求? plackup -r
- 4k 增加(见最后几行) - 一开始更多starman
- 也加薪,但默认 5 个工人的速度较慢(3280->3912)
版本:
perl - 如何在不重新启动的情况下在 Apache 中部署 PSGI 脚本?
我想用 Plack 部署一个在 Apache2 中运行的 PSGI 脚本。Apache 配置为:
当我使用 plackup 测试脚本时,参数会监视文件--reload
上的更新。.psgi
在生产环境中,出于性能原因,Apache 和 Plack 不会检查并重新启动每次更改都很好,但是我如何明确告诉他们重新启动Plack::Handler::Apache2
和/或 PSGI 脚本部署新版本?
看起来 Plack 会定期检查一些变化,但我不知道什么时候。此外,它似乎创建了多个实例,所以我有时会得到不同版本的script.psgi
when at /mypath
。手动刷新 perl 响应处理程序会很有帮助,而不必重新启动 Apache 或等待未知的时间。
perl - Plack 应用程序如何记录到多个记录器?
Plack 中间件非常有用,例如配置独立于应用程序的日志目标。但是我还没有找到同时使用多个记录器的方法:
使用此配置,“SimpleLogger”被“ConsoleLogger”静音,但我想同时记录两者。
perl - Plack & 污点模式
是否推荐使用 perl 的污点模式开发 Plack 应用程序(中间件)?
如果是,如何在受污染的模式下启动 plackup 和/或 Starman?在使用 shebang 行轻松完成的简单 CGI 脚本中。
会perl -T /path/to/{plackup|starman}
做这份工作吗?或者这里有什么推荐的方法?还是不推荐?
关于 Plack+Taint 模式组合的任何想法、提示和文章?
perl - 现代 perl - 准备运行应用程序 - 通过示例学习 - 从什么开始?
我正在学习现代 perl - Moose、Plack 等。在很多建议中,您可以阅读“通过示例学习” - 所以开始搜索一些用 Modern perl 编写的可立即运行的应用程序。
浏览了很多页面,例如:
还有更多(perl.org 等) - 不幸的是 - 我没有找到任何用 Modern perl 编写的“准备运行”应用程序。
我没有找到任何 Moose/Plack - CMS、ShoppingCart、博客或任何 Web 应用程序。很难相信它们不存在,所以可能我在错误的地方搜索。
请您指出一些用现代 Perl(不仅是框架)编写的“准备运行”的 Web 应用程序吗?我检查了上述链接中的所有应用程序,没有一个是基于 Moose/Plack 的。
已经找到“现代”应用程序
基于催化剂:
其他 Moose/Plack 应用:
- 还没有
perl - plackup 访问日志 - 语言环境和打开 pragma - 编码问题
我的语言环境设置是 utf8,因此,在启动 plakup 时,日期字符串也已本地化。因此我得到如下控制台访问日志:
我的部分 a.psgi:
有问题的行是open pragma
. (我需要 MyApp 中的 open pragma)。没有它,访问日志会正确打印Júl
,访问日志会变成垃圾。
那么,如何修复我的访问日志?
- 对于本地化日期字符串的无垃圾打印输出,或
- 将访问日志消息转换为 C 语言环境
任何的想法?
Ps:我知道,PSGI 是面向字节的规范(并且 MyApp 正确处理它),但这个问题不在 MyApp 范围内。
perl - 使用 Plack::Handler::Apache2 和 Apache2 的 PSGI 应用程序导致“未找到”
第一次发帖,好久没来了。
我在 plackup 中使用了一个小型 PSGI 应用程序,但我喜欢切换到 Apache2 的子域。我使用“ plackup /home/ath88/work/kolle/script/dir.psgi -port 80 ”运行应用程序。它可以完美地运行在 plackup 上。该应用程序非常简单,可以在https://github.com/ath88/Kolletilmelding/blob/master/script/dir.psgi找到
但是,出于显而易见的原因,我想运行 Apache2 而不是 plackup。为此,我想使用 Plack::Handler::Apache2。我的 VirtualHost 如下所示:
Apache2 重新启动正常。但是当我尝试访问 aths.dk 时,我只是得到一个 404 未找到。应用程序的目录是正确的,因为它会导致 500 内部错误。查看 apache2/error.log 我得到这个:[无关,见编辑]
每次我重新启动 Apache2 时都会发生这种情况。
我花了 4 个小时试图调试它。我完全难以置信。
编辑:原来 SIGTERM 是从停止 Apache2 重新启动。当我启动它时它不会发生。傻我。
perl - 如何将编辑层添加为 Plack 中间件?
我有一个想法,将编辑层添加到网站作为Plack 中间件。
解释:假设我们创建了一个网站,基于一些框架和模板和 CSS(请求它像/some/page
)。现在我们可以创建一个中间件,以便对以adm
(like /adm/some/page
) 开头的页面的每个请求都显示相同的页面,但添加了一个用于内容编辑的层。所以我们可以像访问者一样轻松地查看和使用页面,但是通过双击块级元素,我们可以修改或添加内容。所以中间件应该将某些块元素与某些事件(双击)绑定并设置处理程序(使用一些 Javascript 库)。
目前这只是一个想法,我还没有在任何 CMS 中看到这种方法。我正在寻找提示、想法和示例,如何启动和实施这样的系统。我希望,已经有类似的事情发生了。
php - Perl-Starman (PSGI) + PHP = Apache2 代理设置?- 怎么做?
如何一起运行:PSGI 和 PHP?
我有 Perl/PSGI 应用程序(在纯 perl Starman 服务器下运行)。现在,由于某种原因也需要运行一个 PHP 应用程序;(,所以(可能)需要 Apache2。问题:
- PHP 真的需要 Apache 吗?还是存在其他解决方案?
- 如何设置反向代理,所以当有人访问 http://mysite/myapp/something 时,会被代理到我的 PSGI“myapp”所在的 Starman?和
- http://mysite/phpapp/anything - 将转到 php 应用程序...
- 我可以设置 Starman 服务器以侦听另一个端口,例如 8080,但希望在端口:80 访问两个应用程序 - 所以需要反向代理。
加:
服务器在我家的 NAT 路由器后面。内部服务器地址:192.168.1.10,从外部看,路由器有正确的互联网地址。我已重定向所有流量
- 实现对两个应用程序的访问的最佳方式是什么:端口:80 从双方(互联网 +“内联网”)的 PSGI + PHP?
- 需要设置一些虚拟主机吗?还是存在一些非常简单的解决方案?
- 一些指向有用指南的链接也应该有很大帮助..
Ps:我不需要优化性能,服务器仅用于家庭/演示/测试目的。
编辑:现在,在另一个类似的情况下,我再次检查了 CPAN,并根据@rawhide 的回答找到了Plack::App::PHPCGI模块。效果很好 -在 plackup 下测试 php 应用程序真的很酷... ;)
perl - 在 Plack/Starman 下呼唤“忏悔”
我有一个运行 TryCatch 语句的 Plack/Starman 应用程序,该语句从 Carp 模块调用“confess”。但是我注意到坦白输出没有打印到 STDOUT。我尝试将 STDERR 输出路由到 STDOUT '2>&1',但仍然看不到任何东西。我没有运气搜索可能的错误日志文件。这种印刷在世界上的什么地方?我相信这可能是一个简单的答案。日志文件位于何处?如果这很重要,我正在一个 Ubuntu 机器上运行。
谢谢