我有一个python脚本的问题,来自某个Web套接字的脚本getdata,获取Json值,结果使用os.system
发送到php脚本:
os.system('echo \' '+ result +' \' | php sort.php')
但是result
被回复,而不是通过管道传输给php脚本
出于调试目的,php脚本只执行此操作:
$input = readfile("php://stdin");
$data = json_decode($input, true);
var_dump($data['input']);
任何想法可以来自哪里?
PS:结果是一个像这样的纯json字符串:
{
"error_code": 250,
"user": {
"id": "1",
"login": "Talus",
"password": "",
"email": "",
"display_name": ""
},
"session": {
"id": "6",
"user_owner": "1",
"token": "3MJ9G53U3292DA4217ECCC201CE06D0B0AB0B5941580BA54",
"last_activity": "2016-02-16 11:59:02",
"in_game": "0"
}
}
答案 0 :(得分:1)
试试这个:
import subprocess
proc = subprocess.Popen(['php', '/path/to/sort.php', result],
stdout=subprocess.PIPE,
shell=True,
stdout=subprocess.PIPE)
script_response = proc.stdout.read()
这是另一种解决方案..
尝试使用python脚本:
subprocess.call(['php', '-f', '/path/to/sort.php', result])
然后像这样更新您的PHP脚本:
// Only execute via php-cli
if (php_sapi_name() == 'cli')
{
if ($argc > 1)
{
// We use the index 1, because 0 == sort.php
$result = json_decode($argv[1]);
print_r($result);
}
else
{
exit('Invalid request @ '. basename(__FILE__) .':'. __LINE__);
}
}
else
{
exit('Invalid request @ '. basename(__FILE__) .':'. __LINE__);
}