[英]Execute perl script continuously
我是 Perl 的新手,我正在使用 Windows 机器
嗯,即时通讯使用 PHP 以及 Perl.. 我完整的 web 应用程序是用 PHP 编写的。 我每 20 分钟编写一个用于数据库交互的 Perl 脚本。 我的 Perl 脚本是这样的。
use strict;
use warnings;
sub Process1()
{
use DBI;
use Date::Format;
my $DBH=DBI->connect("DBI:mysql:dbname:localhost","root","");
my $sth=$DBH->prepare("UPDATE tablename SET column1='blah'"); #update query
$sth->execute();
while (my @row=$sth->fetchrow_array)
{
print $row[0] . "\n";
}
}
while(1) {
&Process1();
sleep 900;
}
如果我必须运行我的 perl 脚本,我只需打开 Perl Commad 行并执行命令
perl C:xampp\htdocs\samplescript.pl
我的问题是——
恕我直言,最好的方法是将您的 perl 代码编写为简单的“一次性”处理,并依靠系统提供的功能重复运行它:
如何在我的 Linux 服务器中运行相同的 Perl 脚本?
有几种方法可以在 Linux 上执行 perl 脚本。
您需要使用解释器执行您的脚本。 在大多数情况下,您使用:
/usr/bin/env perl /Path/To/Your/script.pl
或者
/usr/bin/perl /Path/To/Your/script.pl
至少有一个更好的方法:
您将解释器路径定义到脚本的第一行。
#!/usr/bin/env perl
use strict;
use warnings;
sub Process1()
{
use DBI;
use Date::Format;
my $DBH=DBI->connect("DBI:mysql:dbname:localhost","root","");
my $sth=$DBH->prepare("UPDATE tablename SET column1='blah'"); #update query
$sth->execute();
while (my @row=$sth->fetchrow_array)
{
print $row[0] . "\n";
}
}
while(1) {
&Process1();
sleep 900;
}
然后,您可以使用以下命令执行脚本:
/path/to/your/script.pl
如何执行命令?
您可以在 Linux 终端执行相同的命令吗?
如果我在 Windows 中关闭 perl 命令行,脚本将停止。 如何在linux服务器中停止相同的脚本?
您可以使用 linux 的“kill”命令。 如果你在后台运行它。 如果您关闭终端会话或按 strg+c,脚本也会停止。
您还可以查看此模块并构建您自己的 Perl 命令来停止脚本。
我的提示
守护您的脚本并插入一些命令来处理脚本。 所以它可以在后台运行。
如果您没有在网上找到它们,这可能会有所帮助。
在 Linux perl "path"/script.pl
运行脚本。 要在 linux 中连续运行脚本,请使用 crontab 或通过 shell 脚本运行脚本并在后台运行。
并在 Linux 中停止脚本,分别使用ps -ef|grep script.pl
命令和kill -9 "process_id"
查找并终止进程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.