PHPから呼び出されたPythonでWhooshモジュールを使用して、非常に基本的な検索エンジンを設定しようとしています。私が必要としたいくつかの追加機能のためにモジュールをアップグレードするまで、私はそれを動作させました。その時点で奇妙なバグが現れたようだ。 "searcher = ixtemp.searcher()"という行の後のprint文はPHPスクリプトでは受け取られません。PHPとPythonの間でデータを送信できません
Pythonの検索スクリプトはPHPから呼び出され、最初の結果は、以下のコマンドで表示される
Pythonスクリプト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']
は、次のエラーを与える -
Notice: の未定義オフセット:0 /opt/lampp/htdocs/new/search.php on line 17
pythonスクリプトは、単独で実行すると機能します。ちょっと調べてみると、 "searcher = ixtemp.searcher()"という行の前のすべての印刷文はPHPで読むことができますが、後はすべてPHPスクリプトで受け取られません。私もpopen()関数とproc_open関数を試しましたが、同じ問題があります。
問題の内容や回避方法については、
ありがとうございました
こんにちは、スクリプトの実行に1秒かかると、インタプリタの中で完全に動作します。また、 "searcher = ixtemp.searcher()"が動作する前のステートメントを印刷します。 – usertest
stdoutがリダイレクトされているかどうか分かりますか?そして、どうやってそれを止めることができますか?ありがとう、 – usertest
こんにちは、両方のスクリプトは同じ場所にあり、 "searcher = ixtemp.searcher()"の後でない限り、データはそれらの間を移動しますので、作業ディレクトリに問題はありません。 – usertest