问题标签 [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.

0 投票
2 回答
1782 浏览

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)

版本:

0 投票
3 回答
2762 浏览

perl - 如何在不重新启动的情况下在 Apache 中部署 PSGI 脚本?

我想用 Plack 部署一个在 Apache2 中运行的 PSGI 脚本。Apache 配置为:

当我使用 plackup 测试脚本时,参数会监视文件--reload上的更新。.psgi在生产环境中,出于性能原因,Apache 和 Plack 不会检查并重新启动每次更改都很好,但是我如何明确告诉他们重新启动Plack::Handler::Apache2和/或 PSGI 脚本部署新版本?

看起来 Plack 会定期检查一些变化,但我不知道什么时候。此外,它似乎创建了多个实例,所以我有时会得到不同版本的script.psgiwhen at /mypath。手动刷新 perl 响应处理程序会很有帮助,而不必重新启动 Apache 或等待未知的时间。

0 投票
1 回答
325 浏览

perl - Plack 应用程序如何记录到多个记录器?

Plack 中间件非常有用,例如配置独立于应用程序的日志目标。但是我还没有找到同时使用多个记录器的方法:

使用此配置,“SimpleLogger”被“ConsoleLogger”静音,但我想同时记录两者。

0 投票
2 回答
483 浏览

perl - Plack & 污点模式

是否推荐使用 perl 的污点模式开发 Plack 应用程序(中间件)?

如果是,如何在受污染的模式下启动 plackup 和/或 Starman?在使用 shebang 行轻松完成的简单 CGI 脚本中。

perl -T /path/to/{plackup|starman}做这份工作吗?或者这里有什么推荐的方法?还是不推荐?

关于 Plack+Taint 模式组合的任何想法、提示和文章?

0 投票
5 回答
2627 浏览

perl - 现代 perl - 准备运行应用程序 - 通过示例学习 - 从什么开始?

我正在学习现代 perl - Moose、Plack 等。在很多建议中,您可以阅读“通过示例学习” - 所以开始搜索一些用 Modern perl 编写的可立即运行的应用程序。

浏览了很多页面,例如:

还有更多(perl.org 等) - 不幸的是 - 我没有找到任何用 Modern perl 编写的“准备运行”应用程序。

我没有找到任何 Moose/Plack - CMS、ShoppingCart、博客或任何 Web 应用程序。很难相信它们不存在,所以可能我在错误的地方搜索。

请您指出一些用现代 Perl(不仅是框架)编写的“准备运行”的 Web 应用程序吗?我检查了上述链接中的所有应用程序,没有一个是基于 Moose/Plack 的。


已经找到“现代”应用程序

基于催化剂:

其他 Moose/Plack 应用:

  • 还没有
0 投票
1 回答
291 浏览

perl - plackup 访问日志 - 语言环境和打开 pragma - 编码问题

我的语言环境设置是 utf8,因此,在启动 plakup 时,日期字符串也已本地化。因此我得到如下控制台访问日志:

我的部分 a.psgi:

有问题的行是open pragma. (我需要 MyApp 中的 open pragma)。没有它,访问日志会正确打印Júl,访问日志会变成垃圾。

那么,如何修复我的访问日志?

  • 对于本地化日期字符串的无垃圾打印输出,或
  • 将访问日志消息转换为 C 语言环境

任何的想法?

Ps:我知道,PSGI 是面向字节的规范(并且 MyApp 正确处理它),但这个问题不在 MyApp 范围内。

0 投票
1 回答
1618 浏览

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 重新启动。当我启动它时它不会发生。傻我。

0 投票
1 回答
162 浏览

perl - 如何将编辑层添加为 Plack 中间件?

我有一个想法,将编辑层添加到网站作为Plack 中间件

解释:假设我们创建了一个网站,基于一些框架和模板和 CSS(请求它像/some/page)。现在我们可以创建一个中间件,以便对以adm(like /adm/some/page) 开头的页面的每个请求都显示相同的页面,但添加了一个用于内容编辑的层。所以我们可以像访问者一样轻松地查看和使用页面,但是通过双击块级元素,我们可以修改或添加内容。所以中间件应该将某些块元素与某些事件(双击)绑定并设置处理程序(使用一些 Javascript 库)。

目前这只是一个想法,我还没有在任何 CMS 中看到这种方法。我正在寻找提示、想法和示例,如何启动和实施这样的系统。我希望,已经有类似的事情发生了。

0 投票
2 回答
888 浏览

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 应用程序真的很酷... ;)

0 投票
1 回答
340 浏览

perl - 在 Plack/Starman 下呼唤“忏悔”

我有一个运行 TryCatch 语句的 Plack/Starman 应用程序,该语句从 Carp 模块调用“confess”。但是我注意到坦白输出没有打印到 STDOUT。我尝试将 STDERR 输出路由到 STDOUT '2>&1',但仍然看不到任何东西。我没有运气搜索可能的错误日志文件。这种印刷在世界上的什么地方?我相信这可能是一个简单的答案。日志文件位于何处?如果这很重要,我正在一个 Ubuntu 机器上运行。

谢谢