2012-04-15 3 views
3

Я пытаюсь выполнить скрипт python для тегов POS через PHP. Но его не возвращает полный выход.php exec missing output

Python скрипт:

import nltk 
import sys 

text = sys.argv[1] 

tokenize_into_words = nltk.word_tokenize(text) 

print text 

result = nltk.pos_tag(tokenize_into_words) 

print result 

print "Done!" 

PHP скрипт

$cmd = 'python /Library/WebServer/Documents/varticle/vcmdpos.py ' . $string2; 

$tmp = exec($cmd,$output); 

print_r($output); 

Команда:

питона /Library/WebServer/Documents/varticle/vcmdpos.py Ученые

Наблюдаемые Выход:

Array ([0] => Ученые)

Ожидаемое Ouput:

Array ([0] => Ученые [1] => «[(«Ученые», «NNS»)] «[2] =>« Готово! »)

Когда я запускаю команду вручную, она запускается около 5-10 секунд для запуска. [Это может быть связано с временем, требуемым для маркировки POS или импорта nltk.]

Но при запуске через PHP он немедленно возвращает и выводит из nltk.pos_tag или print заявление после того, как он не возвращается.

Я что-то упустил?

+0

Какова стоимость $ tmp и вы уверены, что $ string2 установлен на «Ученые»? Что произойдет, если вы распечатаете что-то в верхней части скрипта python? –

+0

@ msgmash.com $ tmp ничего не печатает. Все, что находится наверху, перед публикацией nltk.pos_tag. – vaichidrewar

+0

2> & 1 необходимо добавить в команду, чтобы получить полный вывод. – vaichidrewar

ответ

3

2> & 1 необходимо добавить в команду, чтобы получить полный отчет. Это решило мою проблему.

0

Попробуйте использовать shell_exec - или, если вы хотите иметь больше контроля, proc_open - вместо exec().

+0

Я пробовал shell_exec, но он дает тот же результат – vaichidrewar