【问题标题】:Running php script from perl program从 perl 程序运行 php 脚本
【发布时间】:2015-11-05 18:07:49
【问题描述】:

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

【问题讨论】:

    标签: php perl


    【解决方案1】:

    根据您使用的操作系统,有不同的方法。不过,您似乎在 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 中实现该循环并在那里重用您的数据库连接。

    【讨论】:

      【解决方案2】:

      或者,为了(某种)便携,使用 perl open

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-18
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        • 2010-09-26
        • 1970-01-01
        • 2011-07-10
        • 1970-01-01
        相关资源
        最近更新 更多