如何从PHP脚本与python守护进程通信

如何从PHP脚本与python守护进程通信,php,python,ipc,daemon,Php,Python,Ipc,Daemon,我正在为我的公司制作一个扫描服务器,该服务器将用于从nessus、nmap、nikto等工具启动扫描。我已经用PHP编写了这些页面,但我需要控制由nohup生成的后续过程,并以&为背景,因为一旦扫描完成,我需要执行各种操作,例如发送电子邮件,从nessus服务器下载报告等 这里有人建议我创建一个PHP页面与之通信的python守护进程。我一直在谷歌上搜索,但从初学者的角度看,我找不到任何东西来解释通信背后的逻辑。编写守护程序将是我迄今为止最高级的项目。例如,我知道IPC和unix域套接字,但不确

我正在为我的公司制作一个扫描服务器,该服务器将用于从nessus、nmap、nikto等工具启动扫描。我已经用PHP编写了这些页面,但我需要控制由nohup生成的后续过程,并以&为背景,因为一旦扫描完成,我需要执行各种操作,例如发送电子邮件,从nessus服务器下载报告等

这里有人建议我创建一个PHP页面与之通信的python守护进程。我一直在谷歌上搜索,但从初学者的角度看,我找不到任何东西来解释通信背后的逻辑。编写守护程序将是我迄今为止最高级的项目。例如,我知道IPC和unix域套接字,但不确定如何在我的情况下使用它们。因此,我在寻求一些关于我应该做什么的建议或指点

我想我可以创建一个带有while循环的python脚本,该循环不断地检查进程是否已终止,并在终止时执行适当的进程后终止操作。脚本将被后台监控,因此它将在后台运行,我将使用PID作为参数从PHP页面调用它,例如,我可以使用argparse模块访问它

我的逻辑是否正确?还是有更好的解决方案


任何帮助,或只是谷歌的东西,都是非常感谢的!谢谢

所以你的计划是:PHP产生nmap&一个看门狗。看门狗不断轮询nmap以完成运行,然后在完成后进行一些后处理

稍微干净一点的是: PHP产生了一个“流程管理器”,您也可以编写它。这个进程管理器基本上是一个程序,它在子进程中执行nmap,使用“wait”系统调用等待这个子进程完成,例如在C中看起来像:,并执行后处理

它也将更有效,因为“等待”可能比反复检查PID是否已终止更便宜

如果您更喜欢python而不是C,python也有子流程管理:

所以你的计划是:PHP产生nmap&一个看门狗。看门狗不断轮询nmap以完成运行,然后在完成后进行一些后处理

稍微干净一点的是: PHP产生了一个“流程管理器”,您也可以编写它。这个进程管理器基本上是一个程序,它在子进程中执行nmap,使用“wait”系统调用等待这个子进程完成,例如在C中看起来像:,并执行后处理

它也将更有效,因为“等待”可能比反复检查PID是否已终止更便宜

如果您更喜欢python而不是C,python也有子流程管理:

我认为类似的东西肯定会使实现更容易

Gearman是一个作业服务器,它允许您启动作业,查询作业是否仍在运行,并以文本形式获取作业的输出

它支持PHP和Python等

这个答案让我觉得自己像个推销员。

我认为类似的东西肯定会让实现这个更容易

Gearman是一个作业服务器,它允许您启动作业,查询作业是否仍在运行,并以文本形式获取作业的输出

它支持PHP和Python等


这个答案让我觉得自己像个推销员。

这听起来确实很有趣——然而,设计规范的一部分是,有代码监控从php页面生成的进程数量——因此,在x之后,在某些进程完成之前,不允许再创建更多进程,以帮助减少服务器负载。从您所说的来看,似乎每次都会产生一个新的流程管理器,那么上述操作是否可行?或者我需要一个流程经理流程经理^^-谢谢!“流程管理器”基本上大部分时间都在睡觉。因此,如果设计规范的目的纯粹是确保服务器不会过载,那么“process manager”实例就不应该被计算在内。然而,工作处理器应该是。这听起来确实很有趣——然而,设计规范的一部分是,有代码监控从php页面生成的进程数量——因此,在x之后,在某些进程完成之前,不允许创建更多进程,以帮助减少服务器负载。从您所说的来看,似乎每次都会产生一个新的流程管理器,那么上述操作是否可行?或者我需要一个流程经理流程经理^^-谢谢!“流程管理器”基本上大部分时间都在睡觉。因此,如果设计规范的目的纯粹是确保服务器不会过载,那么“process manager”实例就不应该被计算在内。但是,工作处理器应该是。