以不同配置作为后台进程多次运行python脚本
运行之后,我使用php在Linux上通过web运行python脚本,并获得进程ID以不同配置作为后台进程多次运行python脚本,python,linux,Python,Linux,运行之后,我使用php在Linux上通过web运行python脚本,并获得进程ID <!DOCTYPE html> <html> <body> <?php echo 'Starting the mapping process'; echo exec('nohup python cloudemir.py '.$_GET[message].' > /dev/null 2>&1 & echo
<!DOCTYPE html>
<html>
<body>
<?php
echo 'Starting the mapping process';
echo exec('nohup python cloudemir.py '.$_GET[message].' > /dev/null 2>&1 & echo $! &');
?>
</body>
</html>
但它保持不变,最后一次调用覆盖了上一次调用。您应该使用sys.argv。作为cloudemir.py文件的示例:
导入系统
printsys.argv[0]
然后你可以用以下方式来称呼它:
python cloudemir.py Hi # First time
python cloudemir.py Hi2 # Second time
这样,cloudemir.py之后的名称将作为参数输入python程序。这是一个很好的改进方案,但仍然只打印一条消息。argv[0]打印程序名,agr[1]打印消息。我需要两条消息都运行,而不是一条替换另一条。你是说你希望你的python脚本记住它收到的所有消息,直到它被杀死?我想我要问的是,你怎么知道,一个python实例将处理多少条消息?domain/run.php?message=Hi domain/run.php?message=Hi2也许您需要一个domain/run.php?clear_state=True或类似的东西?我想,因为我在后台运行脚本,每次运行它都是新实例并单独运行。可能吗?是的,exec将返回一个新实例,您可以将内容存储在某个文件中,然后读取该文件。。。但是,除非您在python脚本中添加一些选项以清除该文件,否则将给出所有消息。
proc = subprocess.Popen("nohup python cloudemir.py "+content+" > /dev/null 2>&1 &", shell=True)
python cloudemir.py Hi # First time
python cloudemir.py Hi2 # Second time