使用subprocess从Python调用PHP
我的Python脚本是:
base_url = "http://server.com/sync.php?"
phone_url = "phone=%s" % "12345678"
pass_url = "pass=%s" % "xxxxxxxxx"
verif_url = "u=%s" % "12345678"
url = base_url + "%s&%s&%s" % (phone_url,pass_url,verif_url)
req = urllib.urlopen(url)
the_page = req.read()
这个网址看起来像这样:http://server.com/sync.php?phone=123456781&pass=xxxxxxxxx&u=12345678
运行得很好,但是速度很慢...
所以我尝试使用Subprocess:
proc = subprocess.Popen("php ./sync.php", "shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()
我该如何发送参数?(电话、密码、用户)
我的PHP文件内容是:
$username = $_GET["phone"];
$password = $_GET["pass"];
$u = $_GET["u"];
2 个回答
0
我觉得你调用子进程的方式不对。
附言:不要使用相对路径,要使用绝对路径。
你可以试试这个:
proc = subprocess.Popen("php /path/to/your/sync.php arg1 arg2 argN", shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()
1
要给 Popen
提供参数,你应该把这些参数放在一个列表里:
cmd = ["php", "./sync.php"]
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
你可以查看 Popen 的帮助文档,里面说明第一个参数 args
应该是一个程序参数的序列,或者是一个单独的字符串。
另外,你还可以使用 cwd
参数来指定当前的工作目录。