我的perl文件和php文件在同一个文件夹中。我正在cmd 中从perl调用php脚本
我的数据库.pl脚本
#!/usr/bin/perl
while (2)
{
my $php = `sample.php`;
sleep (10);
}
我的sample.php文件
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE users SET name1='Doe' WHERE id=1";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
?>
现在,当我运行database.pl
文件时,我的sample.php
文件在编辑器中每10秒打开一次。。现在,我应该如何运行我的php文件,以便它运行UPDATE查询。
根据您使用的操作系统,有不同的方法。不过,您似乎在Windows上。
.php
扩展的默认操作可能是在编辑器中打开它。更改backticks行以使用PHP解释器显式运行脚本。
my $php = `php sample.php`;
这当然需要Windows知道php
在哪里。它应该在PATH
变量中。
如果您在Linux上,您可以使php脚本可执行。。。
$ chmod u+x sample.php
并从当前方向调用它。
my $php = `./sample.php`;
请注意,您可以使用DBI从Perl执行SQL查询,或者在PHP中实现该循环并在那里重用您的DB连接。
或者,为了(有点)可移植,请使用perl-open:
open(my $proc, 'php sample.php |');
my $php = join('', <$proc>)
并且,为了确保您在同一目录中执行脚本,请使用FindBin模块:
use FindBin qw($RealBin);
open(my $proc, "php '$RealBin/sample.php' |");
...