2014-11-02 5 views
2

Я пытаюсь запустить программу с использованием PHP и продолжать отправлять на нее вывод. Я пробовал использовать exec(), но, как говорится на странице документации, он зависает, ожидая возвращения процесса.Как я могу подключить вход к процессу?

Есть ли что-то вроде exec(), что позволило бы мне отправлять команды в приложение CLI?

Обратите внимание, что поскольку приложение является закрытым, у меня нет возможности изменить приложение, чтобы искать файл lock или любую другую вещь, предложенную как ответы на подобные вопросы.

+0

PHP по умолчанию не работает асинхронно, и он не имеет события или обратные вызовы. Поэтому я сомневаюсь, что есть простой способ сделать это. –

+0

Есть ли язык, который лучше подходит для этой задачи? То, что я хочу сделать, это набрать 'mysql -uroot -proot', а затем отправить команды типа' use testdb; выберите * из теста; и так далее в процесс MySQL. –

ответ

1

Вы ищете команду proc_open. Эта команда запускает процесс, соединяющий его стандартный ввод и вывод с файловыми дескрипторами, открытыми в виде трубок в вашей программе. То, что вы пишете дескриптор 0, принимается за вход в stdin процессом, и то, что оно выводит, может быть прочитано вашей программой из файла. Пример кода в связанной документации php должен вас поймать.

Однако, если вы пытаетесь общаться с MySQL специально, а использовать встроенный в mysql functionality of php

+0

Это именно то, что я ищу. Пример 'mysql' был просто примером, чтобы показать, что мне нужно; К счастью, я не пытался запросить базу данных, используя этот метод. :-) –

Смежные вопросы