Мой файл 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.
В зависимости от используемой операционной системы существуют разные способы. Похоже, что вы на 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 и повторно использовать ваше соединение с БД.
Или, чтобы быть (вроде) переносным, используйте perl open:
open(my $proc, 'php sample.php |');
my $php = join('', <$proc>)
и, конечно, что вы выполняете скрипт в том же каталоге, используйте модуль FindBin:
use FindBin qw($RealBin);
open(my $proc, "php '$RealBin/sample.php' |");
...