从perl程序运行php脚本

时间:2015-11-05 09:34:38

标签: php perl

我的perl文件和php文件在同一个文件夹中。我在cmd中从perl调用php脚本

我的database.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查询

2 个答案:

答案 0 :(得分:0)

根据您使用的操作系统,有不同的方法。好像你在 Windows 上。

.php扩展程序的默认操作可能是在编辑器中打开它。更改反引号行以使用PHP解释器显式运行脚本。

my $php = `php sample.php`;

这当然要求Windows知道php的位置。它应该在您的PATH变量中。

如果您使用 Linux ,则可以使php脚本可执行...

$ chmod u+x sample.php

...并从当前的直接电话中调用它。

my $php = `./sample.php`;

请注意,您可以使用DBI从Perl执行SQL查询,或者在PHP中实现该循环并在那里重用数据库连接。

答案 1 :(得分:0)

或者,要(便携式),请使用perl open

open(my $proc, 'php sample.php |');
my $php = join('', <$proc>)

并且,可以肯定的是,您正在同一目录中执行脚本,请使用FindBin模块:

use FindBin qw($RealBin);
open(my $proc, "php '$RealBin/sample.php' |");
...