我有一个python脚本(analyze.py),它将文件名作为参数并进行分析。完成分析后,它会等待另一个文件名。我想做的是:
我可以将PHP中的参数作为命令行参数发布到Python,但是我无法将参数发送到已经在后台运行的python脚本。
有什么想法吗?
答案 0 :(得分:1)
这里显而易见的答案是:
analyze.py
,而不是将其作为守护程序运行。analyze.py
一大堆文件名,而不是一次传递一个。但可能有一个原因,在你的情况下,没有明显的答案可行。如果是这样,那么您需要某种形式的进程间通信。有几种选择:
mmap
- ed文件或类似文件。这可能还需要共享一个可用于构建条件或事件的信号量,因此孩子可以通过某种方式等待下一次输入。答案 1 :(得分:0)
这就是我所做的。
PHP部分:
<?php
$param1 = "filename";
$command = "python analyze.py ";
$command .= " $param1";
$pid = popen( $command,"r");
echo "<body><pre>";
while( !feof( $pid ) )
{
echo fread($pid, 256);
flush();
ob_flush();
}
pclose($pid);
?>
Python部分:
1. I used [JSON-RPC]: https://github.com/gerold-penz/python-jsonrpc to
create a http service that wraps my python script (runs forever)
2. Created a http client that calls the method of http service.
3. Printed the results in json format.
像魅力一样。