使用子进程从Python调用PHP

时间:2014-06-13 13:53:53

标签: php python python-2.7

我的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 :(得分:1)

要向Popen提供参数,您应将它们存储在列表中:

cmd = ["php", "./sync.php"]
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)

您可以看到Popen help第一个参数args 应该是一系列程序参数,或者是一个字符串

另请注意,您可以使用cwd参数来精确当前目录。

答案 1 :(得分:0)

我认为你错误地调用了子进程。

P.S。不要使用相对路径,请使用绝对路径。

你可以试试这个:

proc = subprocess.Popen("php /path/to/your/sync.php arg1 arg2 argN", shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()