python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解

前言

python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码。函数所需的参数可通过命令行传递。

测试环境

1、操作系统:macos10.13.2

2、php版本:PHP 7.1.7(mac自带)

3、python版本:python3.6.0

4、python库:subprocess

调用php函数

php命令行调用php文件中的函数

php文件:test_hello.php

function hello_world($s1)

{

$str1 = $s1;

echo $str1;

echo "\n";

}

function hello_world2($s1, $s2)

{

$str1 = $s1;

$str2 = $s2;

echo $s1;

echo "**********";

echo $s2;

echo "\n";

}

// 获取参数,索引为0为调用的文件路径,索引为1为调用的函数,索引为2为函数传入参数$s1,索引为3为函数参数$s2

var_dump($argv);

// exit;

// 调用函数

$func_name = $argv[1];

if ($func_name == "hello_world")

{

// 参数1

$param1 = $argv[2];

hello_world($param1);

}

elseif ($func_name == "hello_world2")

{

// 参数1

$param1 = $argv[2];

// 参数2

$param2 = $argv[3];

hello_world2($param1, $param2);

}

else

{

echo "the function $func_name is not exist !";

}

?>

terminal执行php命令

# 字符串中包含空格、逗号、反斜杠,需要使用""来确定为1个参数

php -f test_hello.php hello_world "My name is John\\, age is 20."

php -f test_hello.php hello_world2 "My name is John\\, age is 20." "My hometown is BaoDing."

php -f test_hello.php hello_world3 "My name is John\\, age is 20."

执行结果

d0ea873d360e9b989e2ae9dd0ff0a332.png

python子进程执行php命令行

python文件:test.py,将test_hello.php与test.py放在同目录下运行

import subprocess

class Test(object):

def run(self, cmd):

proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) # 开启子进程

res = proc.stdout.read()

if res:

res = res.decode()

return res

cmd1 = 'php -f test_hello.php hello_world "My name is John\\, age is 20."'

cmd2 = 'php -f test_hello.php hello_world2 "My name is John\\, age is 20." "My hometown is BaoDing."'

cmd3 = 'php -f test_hello.php hello_world3 "My name is John\\, age is 20."'

obj = Test()

for i in [cmd1, cmd2, cmd3]:

res = obj.run(cmd1)

print(res)

print("*" * 10)

16f808b322d8b6c43ccb4689d75147c2.png

相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值