Почему два подпроцесса мешают друг другу работать?

Измените настройки open_basedir в вашей конфигурации PHP (см. Настройка времени выполнения ).

Параметр open_basedir в основном используется для предотвращения PHP-скрипты для конкретного пользователя от доступа к файлам в учетной записи другого пользователя. Как правило, любые файлы в вашей учетной записи должны быть прочитаны вашими собственными скриптами.

Пример настроек с помощью .htaccess, если PHP работает как модуль Apache в системе Linux:


    php_admin_value open_basedir "/home/sites/site81/:/tmp/:/"

6
задан M.Jones 1 March 2019 в 16:23
поделиться

1 ответ

Вероятно, что ffmpeg и alprd пытаются взаимодействовать с одинаковыми дескрипторами файла stdin / stdout. Чтобы решить эту проблему, создайте отдельные каналы для одного или обоих подпроцессов, чтобы использовать их как stdin / stdout. Тогда они могут взаимодействовать с ними, не мешая друг другу.

import subprocess

with open('ffmpeg-output.txt', 'w') as ffmpeg_output:
    ffmpeg = subprocess.Popen(
        ['ffmpeg', '-i', 'input', 'output'],
        stdin=subprocess.PIPE,
        stdout=ffmpeg_output,
        stderr=subprocess.STDOUT)
    # We won't be sending any input into ffmpeg's stdin, so close it.
    ffmpeg.stdin.close()

    # alprd inherits stdin, stdout, and stderr from the current process.
    alprd = subprocess.Popen(['alprd', '-f'])

    # Wait for the subprocesses to finish.
    ffmpeg.wait()
    alprd.wait()
0
ответ дан Daniel Pryden 1 March 2019 в 16:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: