PHP에서 호출 된 Python에서 Whoosh 모듈을 사용하여 매우 기본적인 검색 엔진을 설정하려고했습니다. 필자가 필요한 몇 가지 추가 기능을 위해 모듈을 업그레이드 할 때까지 작동했습니다. 어떤 시점에서 이상한 버그가 나타났습니다. "searcher = ixtemp.searcher()"행 뒤의 모든 print 문은 PHP 스크립트에 의해 수신되지 않습니다.PHP와 Python간에 데이터를 전송하는 데 문제가 있습니다.
파이썬 검색 스크립트는 PHP에서 호출되고 첫 번째 결과는 다음 명령으로 표시됩니다
파이썬 스크립트exec("python print.py",$output,$ret_code);
echo $output[0];
- 이제 PHP를 실행
from whoosh.index import open_dir
ixtemp = open_dir("index")
searcher = ixtemp.searcher()
results = searcher.find("content", u""+"test")
for k in results:
print k['filename']
다음과 같은 오류를 제공합니다 -
알림 : 정의되지 않은 오프셋 : 0 in /opt/lampp/htdocs/new/search.php on line 17
python 스크립트는 자체적으로 실행할 때 작동합니다. 약간의 조사가 있은 후에 "searcher = ixtemp.searcher()"줄 앞의 모든 인쇄 문은 PHP에서 읽을 수 있지만 PHP 스크립트에서는 그 이후의 모든 내용을 읽을 수없는 것으로 보입니다. 또한 popen() 및 proc_open 함수도 시도했지만 동일한 문제가 있습니다.
문제가 무엇인지 또는 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까?
감사합니다.
안녕하세요, 스크립트는 실행하는 데 걸리는 시간이 짧지 않고 인터프리터에서 완벽하게 작동합니다. 또한 searcher = ixtemp.searcher()가 작동하기 전에 명령문을 인쇄하십시오. – usertest
stdout이 리다이렉션되었는지 어떻게 알 수 있습니까? 어떻게 그 happedning을 멈출 수 있을까요? 고마워 – usertest
안녕하세요, 예. 두 스크립트가 같은 위치에 있으며 데이터가 "searcher = ixtemp.searcher()"이후가 아닌 한 그 둘 사이를 이동하므로 작업 디렉토리에 문제가 될 수 없습니다. – usertest