4

我有一个简单的 web 应用程序,用 perl/Mojolicious 编写,并在 hypnotoad 下运行。

我需要为“spawn”事件(由 Mojo::Server::Prefork 发出)定义一些处理程序。

但我不知道,如何在 Mojolicious 应用程序的启动方法代码中插入这个处理程序定义。$self->on("spawn"=>sub {})不起作用:(而且Dumper($self)根本没有帮助:没有 $self->server 或 $server->prefork ...

请告诉我,怎么做。

谢谢!

4

1 回答 1

0

虽然我仍然不知道如何定义在进程“spawn”上触发的处理程序,但我可以说完全可以通过使用来完成相同的事情

Mojo::IOLoop->singleton->next_tick(sub {
  doingSomethingOnProcSpawn()
});

正如 Mojolicious Cookbook ( http://mojolicious.org/perldoc/Mojolicious/Guides/Cookbook#Pre-forking ) 中所述:

在启动期间,您的应用程序会在管理器进程中预加载,该进程不会运行事件循环,因此您可以在 Mojo::IOLoop 中使用“next_tick”在新的工作进程被派生并启动其事件循环时运行代码。

提示:正如我在实际应用程序中看到的那样,Mojo::IOLoop->singleton->next_tick 和 Mojo::IOLoop->next_tick 的工作方式完全相同,所以我不知道它们之间有什么区别。

于 2017-04-13T13:29:46.403 回答