Я хочу вызвать PHP-скрипт из моего сценария Python
У меня есть этот код
subprocess.run(['php', "script.php", long_string], stdout=subprocess.PIPE)
но я получаю ошибку
OSError: [Errno 7] Argument list too long: 'php'
Я читал онлайн-потоки, что всегда должен использовать subprocess.run
для Python 3+
Я также пробовал
subprocess.run(['ulimit', '-s', 'unlimited', 'php', "script.php", long_string], stdout=subprocess.PIPE, shell=True)
Но тогда я получаю
OSError: [Errno 7] Argument list too long: '/bin/sh'
Моя строка - 141,664 characters = 141,706 bytes
и это тоже может стать больше
Что я должен делать? Как превзойти ошибку длины для моего скрипта Python?
Выход моего uname -a
Linux mani 2.6.32-042stab123.9 # 1 SMP Thu Jun 29 13:01:59 MSK 2017 x86_64 x86_64 x86_64 GNU/Linux
Благодаря @Andras Deak за то, что он указал мне в правильном направлении, решение заключалось в том, чтобы отправлять и читать данные из STDIN вместо командной строки
Код Python
subprocess.run(['php', "script.php"], input=long_string.encode("utf-8"), stdout=subprocess.PIPE)
PHP-код
//to receive data from our Python scrapers
if (defined('STDIN')) {
$post = json_decode(fgets(STDIN), true);
}
Код Python
subprocess.run(['php', "script.php", long_string], stdout=subprocess.PIPE)
PHP-код
//to receive data from our Python scrapers
if (defined('STDIN')) {
$post = json_decode($argv[1], true);
}