社区
脚本语言
帖子详情
perl如何实现定时执行功能
shootingstar_w
2008-05-28 01:38:25
我写了个定时采集服务器数据的程序,现在想每5分钟执行一次,请问在程序中如何实现。
while(1)
{
###采集程序
...
sleep(300);
}
感觉这样的话程序部分太大。别的有什么处理方法吗?比如alarm...
请问该如何实现
...全文
1123
10
打赏
收藏
perl如何实现定时执行功能
我写了个定时采集服务器数据的程序,现在想每5分钟执行一次,请问在程序中如何实现。 while(1) { ###采集程序 ... sleep(300); } 感觉这样的话程序部分太大。别的有什么处理方法吗?比如alarm... 请问该如何实现
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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,自己定义一个就行了。
Redis 服务器管理(集群主从复制及高可用)
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上
实现
了master-slave(主从)同步。 Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,
Perl
,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可
执行
单层树复制。存盘可以有意无意的对数据进行写操作。由于完全
实现
了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。 本课程主要讲解以下内容:1. Redis的基本使用2. Redis数据库的数据类型3. Redis数据库数据管理4. Redis的主从复制5. Redis数据库的持久性6. Redis的高可靠性和集群7. Redis的优化和性能测试8. Redis服务器的维护和管理9. Redis服务器的常见问题排错
使用
Perl
编写Shell脚本查询MySQL数据库
在本文中,我们将使用
Perl
编写一个Shell脚本,用于查询MySQL数据库并获取结果集。在上面的代码中,我们首先定义了MySQL数据库的连接信息,包括主机名、数据库名、用户名和密码。然后,我们指定了要
执行
的查询语句,这里使用了一个简单的SELECT语句来检索表中的所有数据。接下来,我们使用
Perl
的反引号运算符(``)
执行
了一个Shell命令,该命令使用MySQL客户端连接到数据库并
执行
查询语句。脚本将连接到MySQL数据库并
执行
查询语句,然后将结果集打印到终端上。接下来,创建一个新的文件,例如。
crontab
定时
执行
任务
第一部分 crontab介绍 每个操作系统都有它的自动
定时
启动程序的
功能
,Windows有它的任务计划,而Linux对应的
功能
是crontab。 crontab简介 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被
执行
的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和
执行
。该词来源于希腊语 chronos(χρόνος),原...
Linux |
定时
任务:crontab实践
执行
定时
任务、发送
执行
结果或文件至邮箱
crontab
定时
任务实践,任务
执行
情况发送至邮箱
Perl
5和
Perl
6对比使用Sigils的差别
这,这个,那,那个@
perl
6中的sigil表示一个类型约束:如果您想用该sigil将某个东西绑定到lexpad条目中,则它必
执行
位置角色。这基本上是创建匿名词法实体(标量、数组和哈希),使用正常语义初始化它们,然后绑定生成的对象(标量集装箱列阵对象,以及散列对象)的名称,您可以将其用作
Perl
6中的任何其他普通变量。@, %,和&在
Perl
6中,不要创建任何特定的对象,而是指示一个类型约束,该约束将应用于名称绑定到的对象。在
Perl
6中,$还指出,其中的任何内容都应被视为单一的项目。
脚本语言
37,718
社区成员
34,238
社区内容
发帖
与我相关
我的任务
脚本语言
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
复制链接
扫一扫
分享
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
试试用AI创作助手写篇文章吧
+ 用AI写文章