Запуск php-скрипта из Perl-программы

1

Мой файл perl и php файл находятся в одной папке. Я вызываю php-скрипт из perl в cmd

Мой скрипт 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

В зависимости от используемой операционной системы существуют разные способы. Похоже, что вы на Windows.

Возможно, ваше действие по умолчанию для расширения .php - это открыть его в редакторе. Измените строку backticks, чтобы явно запустить скрипт с помощью интерпретатора PHP.

my $php = 'php sample.php';

Конечно, это потребует, чтобы Windows знала, где находится php. Он должен быть в переменной PATH.

Если вы работаете в Linux, вы можете сделать исполняемый файл php-скриптом...

$ chmod u+x sample.php

... и вызвать его из текущего каталога.

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

Обратите внимание, что вы можете просто использовать DBI для выполнения SQL-запроса с Perl или реализовать этот цикл в PHP и повторно использовать ваше соединение с БД.

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' |");
...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню