perl如何实现定时执行功能

shootingstar_w 2008-05-28 01:38:25
我写了个定时采集服务器数据的程序,现在想每5分钟执行一次,请问在程序中如何实现。

while(1)
{
###采集程序
...

sleep(300);
}

感觉这样的话程序部分太大。别的有什么处理方法吗?比如alarm...
请问该如何实现
...全文
1147 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shootingstar_w 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 iambic 的回复:]
sleep不挺好的么。什么叫程序部分太大?
[/Quote]

就是程序部分很长,然后还要在主程序外加while
感觉不太美观 呵呵
iambic 2008-05-29
  • 打赏
  • 举报
回复
多写sub对性能没有影响……
shootingstar_w 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 iambic 的回复:]
写到一个sub里面不就完了。sleep恐怕是对程序结构(和可读性)影响最小的方法了。
[/Quote]
恩 这应该是比较好的办法了 我已经在程序中嵌套了几个SUB了 对性能会有影响吗

[Quote=引用 8 楼 fibbery 的回复:]
他所说的程序部分太大是采集的时间如果过长,那么采集周期就会超过5分钟!

你可以使用线程,将采集封装到函数,然后创建你的采集线程。
[/Quote]
可能我说的不够清楚,我是指程序代码过长。
暂时采集周期还没有超过5分钟,而且我就是通过线程采集的。还是谢谢!
fibbery 2008-05-29
  • 打赏
  • 举报
回复
他所说的程序部分太大是采集的时间如果过长,那么采集周期就会超过5分钟!

你可以使用线程,将采集封装到函数,然后创建你的采集线程。
iambic 2008-05-29
  • 打赏
  • 举报
回复
写到一个sub里面不就完了。sleep恐怕是对程序结构(和可读性)影响最小的方法了。
iambic 2008-05-28
  • 打赏
  • 举报
回复
sleep不挺好的么。什么叫程序部分太大?
wx红杉树 2008-05-28
  • 打赏
  • 举报
回复
wait
alarm
sigtrap / signal
上面的函数和模块会对你有用的


#!/usr/bin/perl
$SIG{ALRM}=\&timer;

alarm 1;
sub timer {
alarm 0;
print scalar localtime,"\n";
$SIG{ALRM}=\&timer;
alarm 1;
}

while (1) {sleep;}
shootingstar_w 2008-05-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jiuchang 的回复:]
perl里有alarm的功能,需要和eval配合使用
示例如下:
eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm $timeout;
$nread = sysread SOCKET, $buffer, $size;
alarm 0;
};
if ($@) {
die unless $@ eq "alarm\n"; # propagate unexpected errors
# timed out
}
else {
# didn't
}
[/Quote]

那是不是只要定义这样一个信号量就可以了吗,和采集程序主体是怎样联系起来的呢?
jiuchang 2008-05-28
  • 打赏
  • 举报
回复
perl里有alarm的功能,需要和eval配合使用
示例如下:
eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm $timeout;
$nread = sysread SOCKET, $buffer, $size;
alarm 0;
};
if ($@) {
die unless $@ eq "alarm\n"; # propagate unexpected errors
# timed out
}
else {
# didn't
}
xiaoyu9805119 2008-05-28
  • 打赏
  • 举报
回复
win下有计划任务

linux之类的有cron,自己定义一个就行了。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧