5 простых способов запустить скрипт Python с аргументами на PHP с использованием JSON

В этой статье блога мы рассмотрим несколько методов выполнения сценария Python с аргументами в PHP с использованием JSON. Независимо от того, являетесь ли вы новичком или опытным разработчиком, эти простые методы помогут вам легко интегрировать сценарии Python в ваши приложения PHP. Давайте погрузимся!

Метод 1. Выполнение сценария Python с использованием Shell_exec()
Пример кода:

$scriptPath = 'path/to/script.py';
$args = json_encode(['arg1' => 'value1', 'arg2' => 'value2']);
$command = "python $scriptPath '$args'";
$result = shell_exec($command);
echo $result;

Метод 2: вызов скрипта Python через system()
Пример кода:

$scriptPath = 'path/to/script.py';
$args = json_encode(['arg1' => 'value1', 'arg2' => 'value2']);
$command = "python $scriptPath '$args'";
system($command, $output);
echo $output;

Метод 3: использование proc_open() для запуска скрипта Python
Пример кода:

$scriptPath = 'path/to/script.py';
$args = json_encode(['arg1' => 'value1', 'arg2' => 'value2']);
$descriptorspec = [
    0 => ['pipe', 'r'], // stdin
    1 => ['pipe', 'w'], // stdout
    2 => ['pipe', 'w']  // stderr
];
$process = proc_open("python $scriptPath", $descriptorspec, $pipes);
if (is_resource($process)) {
    fwrite($pipes[0], $args);
    fclose($pipes[0]);
    $output = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    $errors = stream_get_contents($pipes[2]);
    fclose($pipes[2]);
    proc_close($process);
    echo $output;
}

Метод 4: использование cURL для выполнения скрипта Python с аргументами
Пример кода:

$scriptUrl = 'http://localhost/path/to/script.py';
$args = json_encode(['arg1' => 'value1', 'arg2' => 'value2']);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $scriptUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

Метод 5: использование HTTP-клиента Guzzle для запуска скриптов Python
Пример кода:

require 'vendor/autoload.php';
use GuzzleHttp\Client;
$scriptUrl = 'http://localhost/path/to/script.py';
$args = json_encode(['arg1' => 'value1', 'arg2' => 'value2']);
$client = new Client();
$response = $client->request('POST', $scriptUrl, [
    'body' => $args
]);
$result = $response->getBody()->getContents();
echo $result;

В этой статье мы рассмотрели пять различных методов выполнения сценария Python с аргументами в PHP с использованием JSON. Независимо от того, предпочитаете ли вы использовать Shell_exec(), system(), proc_open(), cURL или HTTP-клиент Guzzle, теперь в вашем распоряжении множество опций. Поэкспериментируйте с этими методами и выберите тот, который лучше всего соответствует требованиям вашего проекта. Приятного кодирования!