2013-06-20 2 views
0

Мне нужно запустить командную строку программы Linux с php через функцию exec. Основная проблема заключается в том, что мне нужно ждать результата программы и через некоторое время возвращается (от 30 секунд до 2 минут). Поскольку PHP не имеет многопоточности, весь сайт застрянет на это время. Есть ли способ запустить exec как «новая тема» (не в фоновом режиме)?Как запустить exec как «новый поток»?

+0

Что вы подразумеваете под «новой нитью», если вы не имеете в виду в фоновом режиме? Как вы уже упоминали, PHP не имеет многопоточности, поэтому ваши параметры ждут его завершения или оставят его в фоновом режиме. – jcsanyi

+0

Почему бы не выполнить его с помощью ajax, так же как и поток в этом случае. – DevZer0

+0

@ DevZer0 и так весь сайт застрянет, как я уже говорил – Kin

ответ

1

также, если вы сказали, что не хотите запускать его в фоновом режиме, это обычное решение для этого, а затем регулярно проверяйте, завершен ли процесс.

исполняемая программа может записать ее «возвращаемое значение» во временный файл, когда она закончится. поэтому, если файл существует, вы знаете, что процесс завершен, и вы можете работать с результатом.

также рекомендуется не только проверять наличие временного файла, но и идентификатор процесса выполняемой программы. если он не предоставляет PID, вы можете запустить его с помощью инструмента, такого как start-stop-daemon, который может предоставить эту информацию.

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