Web ページを毎分更新する Perl スクリプトがあります。ここで、1 時間に 1 回の MySQL クエリをいくつか追加したいと思います。JavaScript のように Perl にスケジュール エグゼキュータはありますか、それとも Perl に JavaScript を組み込むことはできますか?
2 に答える
2
この解決策はPerlにあります。
localtime()
関数は perl で使用できます。1 時間の差を計算し、MySQL クエリを実行します。
理解するには、このリンクにlocaltime()
アクセスしてください。
また
CPAN を使用できますTime::HiRes
。
Time::HiRes
についてはこちらをお読みください。
また
次のコードに従います。
use Time::Elapse;
## somewhere in your code...
Time::Elapse->lapse(my $now);
#...rest of code execution
print "Time Elapsed: $now\n";
于 2013-03-07T07:57:45.880 に答える
0
私はこのようなものを提案します。次の更新に繰り越されるタイムスタンプを含めます(メタタグが発生するように調整します)。SQLを正確に1時間で実行する必要がある場合、いくつかの問題が発生しますが、それは単なるメンテナンスだと思います。タイムスタンプは、SQLが実行されている場合にのみ更新され、SQLは、現在の時刻が前のタイムスタンプから1時間以上経過している場合にのみ実行されます。
以下は、現在の時刻を使用する代わりに、タイムスタンプを3600秒に更新します。その後、1時間ごとに実行することに非常に近づいています。
一部のWeb開発者は、この方法でメタリフレッシュを使用することを好まないため、javascriptまたはcookieがオプションになる場合があります。(しかし、これがあなたのために働くなら、幸せになってください:-)
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>
|;
于 2013-03-07T17:48:47.980 に答える