(Empfohlenes Tutorial:PHP-Video-Tutorial)
Einführung in die Ausführung von Python-Skripten in PHP-Programmen.
Die Ausführung von Python-Programmen in PHP basiert hauptsächlich auf Programmausführungsfunktionen.
Lassen Sie uns hier darüber sprechen Drei verwandte Funktionen: exec(), system() und passhru().
Hier sprechen wir hauptsächlich über die Funktion exec(), stellen vor, wie man diese Funktion zum Übergeben von Parametern verwendet,
und wie man Python verwendet, um JOSN-Daten für die Verwendung durch PHP zurückzugeben.
Führen Sie ein externes Programm aus
exec ( string $command [, array &$output [, int &$return_var ]] ) : string
Parameterbeschreibung:
Befehl: Der auszuführende Befehl, der drei Teilzeichenfolgen enthält, ist der Interpreter des aktuell verwendeten Systems Die Teilzeichenfolge ist der Speicherort des auszuführenden Skripts, und die dritte Teilzeichenfolge ist eine unbegrenzte Anzahl von Parametern, die durch Leerzeichen getrennt übergeben werden müssen. Achten Sie auf das Format. Verwenden Sie Leerzeichen, um Teilzeichenfolgen zu trennen.
Ausgabe: Wenn der Ausgabeparameter angegeben wird, wird dieses Array mit der Ausgabe der Befehlsausführung gefüllt, ein Element im Array für jede Ausgabezeile. (Hinweis: Was in der Ausgabe gespeichert wird, ist nicht der Rückgabewert in Python, und alle Rückgabewerte werden nicht gespeichert. Was in der Ausgabe gespeichert wird, ist der im Python-Skript ausgegebene Wert, bei dem es sich um alle von der Ausgabe ausgegebenen Daten handelt print()-Funktion)
return_var: Wenn sowohl Ausgabe- als auch Return_var-Parameter bereitgestellt werden, wird der Rückgabestatus nach der Befehlsausführung in diese Variable geschrieben.
index.php
'; var_dump($re);
ceshi.py
def send(): data = '1,2,3,4,5' print(data) if __name__ == '__main__': send()
aus (Wichtiger Hinweis: Wenn die vom Python-Skript zurückgegebenen Daten Chinesisch enthalten, müssen Sie iconv('gbk', 'utf-8') verwenden. , $re ); Escape)
inde.php
$canshu1 = '这是PHP传过来的参数'; $canshu2 = date('Y-m-d'); $re = exec("python ceshi.py $canshu1 $canshu2"); $re = iconv('gbk', 'utf-8', $re); var_dump($re);
test.py
import sys def send(): # a1 = sys.argv[1] # a2 = sys.argv[2] re = sys.argv[1:] data = '1,2,3,4,5,' + ','.join(re) # 转字符串 print(data) if __name__ == '__main__': send()
Importieren Sie das sys-Paket und verwenden Sie das sys.argv[]-Array, um das zu erhalten Eingehende Parameter, Abschnitt Ein eingehender Parameter ist sys.argv[1], der zweite ist sys.argv[2] und so weiter. Verwenden Sie nicht argv[0]
, um die zurückgegebenen JSON-Daten zu empfangen:
import sys import json def send(): dict = {'id':111, 'title':'测试title'} dict['data'] = sys.argv[1:] jsonArr = json.dumps(dict, ensure_ascii=False) print(jsonArr) if __name__ == '__main__': send()
(bei chinesischen Schriftzeichen müssen Sie „sure_ascii=False“ angeben)
führt das externe Programm aus und zeigt die Ausgabe an
system ( string $command [, int &$return_var ] ) : string
Gleiche wie die C-Version der system()-Funktion Diese Funktion führt den Befehlsparameter aus. Geben Sie den Befehl an und geben Sie die Ausführungsergebnisse aus.
Wenn PHP im Servermodul ausgeführt wird, versucht die Funktion system() außerdem, den Ausgabecache des Webservers nach jeder Ausgabezeile automatisch zu aktualisieren.
Wenn Sie die Rohausgabe eines Befehls ohne jegliche Verarbeitung erhalten möchten, verwenden Sie bitte die Funktion passhru().
index.php
'; echo '这是赋值输出:'; var_dump($re);
Die Originalversion von test.py ist wie folgt:
passthru ( string $command [, int &$return_var ] ) : void
echo '这是运行直接输出:'; $re = passthru('python ceshi.py'); // $re = iconv('gbk', 'utf-8', $re); echo '
'; echo '这是赋值输出:'; var_dump($re);
(Empfohlenes Tutorial:PHP-Video-Tutorial
)Das obige ist der detaillierte Inhalt vonSo führen Sie ein Python-Skript in einem PHP-Programm aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!