我有一个邮件解析器 perl 脚本,每次用户收到邮件时都会调用它(使用 .qmail)。它从邮件中提取日历附件,并将文件的“路径”放入使用Directory::Queue 模块实现的 FIFO 队列中。
另一个 perl 脚本读取日历附件的路径并在本地系统和远程 CalDAV 服务器上执行某些文件操作,正在作为守护程序运行,如此处所述。所以基本上这个脚本看起来像:
my $declarations
sub foo {
.
.
}
sub bar {
.
.
}
while ($keep_running) {
for(keep-checking-the-queue-for-new-entries) {
sub caldav_logic1 {
.
.
}
sub caldav_logic2 {
.
.
}
}
}
我正在使用 Proc::Daemon 将脚本作为守护进程运行。现在的问题是,这个进程几乎有 100% 的 CPU 使用率。以更标准、更安全的方式实施守护程序的建议方法是什么?我使用的代码与提到使用 Proc::Daemon 的链接中提到的代码几乎相同。