Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何安排在perl中每小时执行一次脚本的一部分,而其余部分每分钟刷新一次_Javascript_Perl - Fatal编程技术网

Javascript 如何安排在perl中每小时执行一次脚本的一部分,而其余部分每分钟刷新一次

Javascript 如何安排在perl中每小时执行一次脚本的一部分,而其余部分每分钟刷新一次,javascript,perl,Javascript,Perl,我有一个Perl脚本,每分钟刷新一次网页。现在我想添加一些MySQL查询,它们应该每小时查询一次。Perl中是否有类似JavaScript的调度执行器,或者我是否可以将JavaScript合并到Perl中?此解决方案与Perl一起使用 您可以在perl中使用localtime()函数。 计算一个小时的差值,然后执行MySQL查询 要了解localtime(),请访问链接 或 您可以使用CPAN的Time::HiRes 请阅读有关时间:雇佣的信息 或 请遵循以下代码: use Time::Elap

我有一个Perl脚本,每分钟刷新一次网页。现在我想添加一些MySQL查询,它们应该每小时查询一次。Perl中是否有类似JavaScript的调度执行器,或者我是否可以将JavaScript合并到Perl中?

此解决方案与Perl一起使用

您可以在perl中使用
localtime()
函数。 计算一个小时的差值,然后执行MySQL查询

要了解
localtime()
,请访问链接

您可以使用CPAN的
Time::HiRes

请阅读有关时间:雇佣的信息

请遵循以下代码:

use Time::Elapse;

## somewhere in your code...
Time::Elapse->lapse(my $now);

#...rest of code execution    
print "Time Elapsed: $now\n";

我建议这样做。包括一个时间戳,该时间戳将被转入下一次更新(调整meta标记以使其发生)。如果sql必须在1小时内运行,则会出现一些问题,但我想这只是一些维护。时间戳仅在sql运行时更新,而sql仅在当前时间比上一个时间戳晚一小时以上时运行

以下内容将时间戳更新为3600秒,而不是使用当前时间。那么我们很快就可以每小时运行一次了

一些web开发人员不喜欢以这种方式使用元刷新,因此javascript或cookie可能是一种选择。(但如果这对你有效,请高兴:-)

使用严格;
使用CGI;
#time()是很久以前的秒数
my$lastrun=CGI->param('lastrun')|| time();
#如果小时很重要(即不是58或61分钟),则需要
#考虑运行此脚本所花费的时间等
如果(time()>$lastrun+60*60){#一小时是60秒*60分钟
$lastrun+=60*60;#在启动sql之前读取时间戳
#运行sql
}
#每分钟做一些固定的事情
打印qq|
Pragma:没有缓存
内容类型:text/html
再次你好,等待。。。
|;

是perl脚本实际刷新了网页,还是perl脚本生成了一个包含(或类似javascript代码)的网页?如果meta/javascript刷新,您可能需要将时间戳作为cgi参数添加到网页中(…&lastSqlRun=14:32),并测试时间是否已过
use strict;
use CGI;

#time() is number of seconds since long time ago
my $lastrun = CGI->param('lastrun') || time();

#if hour is important (ie not 58 or 61 minutes) then need to 
#consider the time spent running this script, etc
if (time() > $lastrun + 60 * 60) { #one hr is 60 sec * 60 min
    $lastrun += 60 * 60; #udate timestamp before starting sql
    #run sql
}

#do fixed stuff every minute

print qq|
    Pragma: no-cache
    Content-Type: text/html

    <html><head>
        <!-- remember to adust the url below ---vvvvvvvvvvvvvvvv-----here -- so time is ok vvvvv -->
        <meta http-equiv="refresh" content="60;URL='http://example.com/script.pl?lastrun=$lastrun">
    </head>
    <body>hello again, waiting...</body>    
    <html>
|;