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

     2023-02-16     17

关键词:

【中文标题】如何从 PHP 脚本与 python 守护进程通信【英文标题】:How to communicate with a python daemon from PHP scripts 【发布时间】:2011-12-16 17:25:14 【问题描述】:

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

我被建议在这里创建一个与 PHP 页面通信的 python 守护程序。我无休止地用谷歌搜索,但我找不到任何东西可以从初学者的角度解释通信背后的逻辑(编写守护程序将是我迄今为止***的项目)。例如,我知道 IPC 和 unix 域套接字,但不确定如何在我的情况下使用它们。因此,我正在寻求一些关于我应该做什么的建议或指示。

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

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

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

【问题讨论】:

【参考方案1】:

我认为像gearman 这样的东西肯定会让实现这一点更容易。

Gearman 是一个作业服务器,可让您启动作业、查询作业是否仍在运行并获取作业的输出(作为文本)。

它支持 PHP 和 Python(以及其他)。

(这个回答让我觉得自己像个推销员)。

【讨论】:

【参考方案2】:

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

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

这也会更有效,因为“等待”可能比重复检查 PID 是否已终止更便宜。

如果你比 C 更喜欢 python,python 也有子进程管理: http://docs.python.org/library/subprocess.html

【讨论】:

这听起来确实很有趣-但是,设计规范的一部分是有代码可以监视从 php 页面产生的进程数量-因此在 x 数量之后不允许再创建,直到有些完成后,帮助减轻服务器负载。从您所说的看来,每次都会产生一个新的流程管理器,那么上述可能吗?或者我需要一个流程管理器 ^^ - 谢谢! “进程管理器”基本上大部分时间都在睡觉。因此,如果设计规范的目的纯粹是为了确保服务器不超载,则不应计算“流程管理器”实例。但是,工作处理器应该是。

如何将 php 脚本作为守护进程运行

】如何将php脚本作为守护进程运行【英文标题】:howtorunphpscriptasdaemon【发布时间】:2015-03-2122:27:36【问题描述】:我有这个PHP应用程序,它的启动非常复杂。我受到nodejs工作方式的启发(该应用程序是实时的,无需像PHP那样加... 查看详情

如何将我的php脚本以守护进程的方式一直运行

参考技术A用一个简单可靠的Shell脚本来守护一个可能会突发退出的PHP服务/etc/rc.local里加入开机启动命令: 查看详情

与守护进程的进程间通信

】与守护进程的进程间通信【英文标题】:InterprocesscommunicationwithaDaemon【发布时间】:2011-10-0623:08:22【问题描述】:我想实现一个Unix守护进程(我们称之为myUnixd),并且希望用户能够通过命令行与这个守护进程进行交互,例如... 查看详情

Python守护进程/进程间通信

】Python守护进程/进程间通信【英文标题】:PythonDaemon/InterprocessCommunication【发布时间】:2016-01-1218:35:00【问题描述】:我需要对用户输入的图像执行相当密集的计算。我需要加载几个文件和外部深度学习库才能使其工作,这需要... 查看详情

有人可以解释一下 python 守护程序如何也可以与自身正在运行的实例进行通信吗?

】有人可以解释一下python守护程序如何也可以与自身正在运行的实例进行通信吗?【英文标题】:Couldsomeoneexplainhowapythondaemoncanalsofunctiontocommunicatewitharunninginstanceofitself?【发布时间】:2013-03-1507:57:19【问题描述】:我想实现一个P... 查看详情

将 php 脚本作为守护进程运行

】将php脚本作为守护进程运行【英文标题】:Runphpscriptasdaemonprocess【发布时间】:2011-01-0310:42:23【问题描述】:我需要运行一个php脚本作为守护进程(等待指令并做一些事情)。cron工作不会为我做这件事,因为一旦指令到达就... 查看详情

Python 脚本作为 linux 服务/守护进程

】Python脚本作为linux服务/守护进程【英文标题】:Pythonscriptaslinuxservice/daemon【发布时间】:2011-06-0923:39:44【问题描述】:你好,我正在尝试让python脚本在(ubuntu)linux上作为服务(守护程序)运行。在网络上有几种解决方案,例如... 查看详情

python守护进程类的python脚本(代码片段)

查看详情

python实例浅谈之五python守护进程和脚本单例运行(代码片段)

...录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业规划进程crond启动,还可以由用户终端(通常是s 查看详情

Python 守护进程和 systemd 服务

...:41【问题描述】:我有一个作为守护进程工作的简单Python脚本。我正在尝试创建systemd脚本以便能够在启动期间启动此脚本。当前systemd脚本:[Unit]Description=TextAfter=syslog.target[Service]Type=forkingUs 查看详情

如何加快与子进程的通信

】如何加快与子进程的通信【英文标题】:Howtospeedupcommunicationwithsubprocesses【发布时间】:2014-08-0315:24:00【问题描述】:我正在使用Python2subprocess和threading线程来获取标准输入,使用二进制文件A、B和C对其进行处理,并将修改后... 查看详情

如何使 Python 脚本像 Linux 中的服务或守护程序一样运行

】如何使Python脚本像Linux中的服务或守护程序一样运行【英文标题】:HowtomakeaPythonscriptrunlikeaserviceordaemoninLinux【发布时间】:2010-12-0820:31:04【问题描述】:我编写了一个Python脚本来检查某个电子邮件地址并将新电子邮件传递给外... 查看详情

CDH 5.3.2 - 需要从 shell/脚本重新启动 impala 守护进程

】CDH5.3.2-需要从shell/脚本重新启动impala守护进程【英文标题】:CDH5.3.2-Needtorestartimpaladaemonfromshell/script【发布时间】:2017-09-1812:12:03【问题描述】:我正在使用CDH5.3.2集群并且需要能够从脚本启动/停止impala守护程序。ClouderaDocs中... 查看详情

如何将我的php脚本以守护进程的方式一直运行

用一个简单可靠的Shell脚本来守护一个可能会突发退出的PHP服务/etc/rc.local里加入开机启动命令:nohup/path/to/swoole.sh>>/path/to/swoole.sh.log2>&1&swoole.sh内容如下:#!/bin/shPREFIX=/home/eechenINTERVAL=1nohupphp$PREFIX/swoole.php>>$PREFIX/swool... 查看详情

没有STDOUT的两个python脚本之间的进程间通信

】没有STDOUT的两个python脚本之间的进程间通信【英文标题】:InterprocessCommunicationbetweentwopythonscriptswithoutSTDOUT【发布时间】:2018-07-1619:36:55【问题描述】:我正在尝试创建一个监控所有线程的Monitor脚本或一个运行多个记录器、多... 查看详情

从 php 运行 Python 脚本,保存进程 pid,不要等待它完成

】从php运行Python脚本,保存进程pid,不要等待它完成【英文标题】:RunPythonscriptfromphp,saveprocesspid,anddon\'twaitittofinish【发布时间】:2015-01-0915:06:51【问题描述】:我有一个PHP脚本,它使用shell_exec(\'myScript.py\')运行python脚本。它工... 查看详情

如何在 Linux 上管理基于 Python 的守护进程?

】如何在Linux上管理基于Python的守护进程?【英文标题】:HowdoImanageaPythonbaseddaemononLinux?【发布时间】:2011-02-2610:55:06【问题描述】:我有一个基于Python的工作程序,我想将其作为守护程序运行。目前我正在以一种非常骇人听闻... 查看详情

Erlang:守护进程“init.d”脚本无法启动

】Erlang:守护进程“init.d”脚本无法启动【英文标题】:Erlang:daemon\'init.d\'scriptfailstostart【发布时间】:2010-11-2803:23:24【问题描述】:我有一个管理Erlang守护进程的python脚本。系统初始化后,通过shell使用时一切正常。现在,当... 查看详情