我有一个 python 脚本(analyze.py),它以文件名作为参数并对其进行分析。完成分析后,它会等待另一个文件名。我想做的是:
- 将文件名作为参数从 PHP 发送到 Python。
- 在后台运行 analyze.py 作为守护进程,文件名来自 PHP。
我可以将 PHP 中的参数作为命令行参数发布到 Python,但我不能将参数发送到已经在后台运行的 Python 脚本。
有任何想法吗?
我有一个 python 脚本(analyze.py),它以文件名作为参数并对其进行分析。完成分析后,它会等待另一个文件名。我想做的是:
我可以将 PHP 中的参数作为命令行参数发布到 Python,但我不能将参数发送到已经在后台运行的 Python 脚本。
有任何想法吗?
这里明显的答案是:
analyze.py
一次,而不是作为守护进程运行。analyze.py
一大堆文件名,而不是一次传递一个。但是可能有一个原因,两个明显的答案都不适用于您的情况。如果是这样,那么您需要某种形式的进程间通信。有几种选择:
mmap
在父子节点中打开共享内存区域或-ed 文件或类似文件。这可能还需要共享一个可用于构建条件或事件的信号量,因此孩子可以通过某种方式等待下一个输入。这就是我所做的。
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);
?>
蟒蛇部分:
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.
奇迹般有效。