如何在linux服务器上用 PHP 执行 python 脚本

如何在linux服务器上用 PHP 执行 python 脚本,第1张

如果你有服务器权限的话直接exec命令调用python命令行就行了

php文件:test.php

<?php

    exec("python hw.py",$array,$ret)

    echo("result: ")

    print_r($array)

    echo("return value: ".$ret)

?>

py文件:hw.py(与php同一目录)

print ("Hello World")

php执行结果:

result: Array ( [0] =>Hello World ) return value: 0

python环境在小鸟云云服务器装好后,就有一个idle工具,你找一下安装目录,自带的编辑器,在任意目录新建一个

aa.py

文件,用记事本和idle工具都行,输入print("hello

world"),如果你使用的是idle,直接按f5,就能查看结果,如果用记事本,打开cmd,进入这个目录,输入命令python

aa.py就出来结果了。

一、nohup

nohup,即 no hangup,nohup 的用途就是让提交的命令忽略 hangup 信号,从而使我们的进程避免中途被中断。它可以让 python 脚本和服务器连接端的 session 分离,以达到退出后依旧执行:

$ chmod +x /your_path/yourscript.py   # 先设置可执行权限$ nohup python /your_path/yourscript.py# 切记退出的 Terminal 的时候,不要 ctrl+c 退出,而是直接关闭,不然 Nohup 就被你关闭了。

如何关闭这个一直执行的进程呢:

# 找到对应的进程 PID

$ ps -ef | grep python

# 返回内容如:

user      2430     1  0 Jul03 ?        00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd

# kill 掉该进程即可:

$ kill -9 2430

PS:nohup 在服务器重启之后就失效了,所以并不完美。

二、将命令写入 Linux 启动脚本

Linux 在启动的时候会执行 /etc/rc.local 里面的脚本,所以只要在这里添加执行命令就可以:

$ vim /etc/rc.local

# 如果是 Centos 添加以下内容:

/your_path/python3.4 /your_path/yourscript.py

# 以上内容需要添加在 exit 命令前,而且由于在执行 rc.local 脚本时,PATH 环境变量未全部初始化,因此命令需要使用绝对路径

PS:这种方式的缺点是如果脚本挂了,那么不会自动重新启动。

三、使用 Supervisor 进程管理工具

详见这篇文章:使用 Supervisor 管理服务器后台进程,在服务器重启和脚本出错后,可以完美重启,推荐。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/498568.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-15
下一篇2023-06-15

发表评论

登录后才能评论

评论列表(0条)

    保存