Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menjalankan skrip Python dalam program PHP

Bagaimana untuk menjalankan skrip Python dalam program PHP

WBOY
WBOYke hadapan
2022-09-09 13:48:592551semak imbas

(Tutorial disyorkan: Tutorial video PHP)

Perkenalkan cara menjalankan skrip Python dalam program php,

Penjalanan program python dalam PHP bergantung terutamanya pada fungsi pelaksanaan program

Berikut ialah tiga fungsi yang berkaitan: exec(), system() dan passthru().

Di sini kita bercakap tentang fungsi exec(), memperkenalkan penggunaan fungsi ini untuk menghantar parameter,

dan cara menggunakan python untuk mengembalikan data josn untuk digunakan php.

1. exec()

Laksanakan program luaran

exec ( string $command [, array &$output [, int &$return_var ]] ) : string

Perihalan parameter:

arahan: untuk dilaksanakan Perintah, yang merangkumi tiga subrentetan Subrentetan pertama ialah penterjemah sistem semasa yang digunakan, subrentetan kedua ialah lokasi skrip yang akan dilaksanakan dan subrentetan ketiga ialah bilangan parameter tanpa had yang perlu dimasukkan. tengah Pisahkan dengan ruang dan perhatikan format. Gunakan ruang untuk memisahkan subrentetan.

output: Jika parameter output disediakan, tatasusunan ini akan diisi dengan output pelaksanaan perintah, satu elemen dalam tatasusunan untuk setiap baris output. (Nota: Apa yang disimpan dalam output bukanlah nilai pulangan dalam python, dan semua nilai pulangan tidak akan disimpan. Apa yang disimpan dalam output ialah nilai output dalam skrip python, iaitu semua output data oleh print() function)

return_var: Jika kedua-dua parameter output dan return_var disediakan, status pulangan selepas pelaksanaan arahan akan ditulis kepada pembolehubah ini.

1. Jalankan terus

index.php

<?php
$re = exec(&#39;python ceshi.py&#39;, $out);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
var_dump($out);
echo &#39;<br/>&#39;;
var_dump($re);

ceshi.py

def send():
    data = &#39;1,2,3,4,5&#39;
    print(data)
if __name__ == &#39;__main__&#39;:
    send()

(Nota penting: Jika data dikembalikan oleh Skrip Python mengandungi bahasa Cina, anda perlu menggunakan iconv('gbk', 'utf-8', $re); data

inde.php

test.py

Import pakej sys, gunakan tatasusunan sys.argv[] untuk mendapatkan parameter masuk, yang pertama diluluskan dalam Parameter ialah sys.argv[1], yang kedua ialah sys.argv[2] dan seterusnya Jangan gunakan argv[0]
$canshu1 = &#39;这是PHP传过来的参数&#39;;
$canshu2 = date(&#39;Y-m-d&#39;);
$re = exec("python ceshi.py $canshu1 $canshu2");
$re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
var_dump($re);

import sys
def send():
    # a1 = sys.argv[1]
    # a2 = sys.argv[2]
    re = sys.argv[1:]
    data = &#39;1,2,3,4,5,&#39; + &#39;,&#39;.join(re) # 转字符串
    print(data)
if __name__ == &#39;__main__&#39;:
    send()
<.> untuk menerima data json yang dikembalikan:

(Apabila bercakap tentang aksara Cina, ensure_ascii=False perlu dinyatakan)

import sys
import json
def send():
    dict = {&#39;id&#39;:111, &#39;title&#39;:&#39;测试title&#39;}
    dict[&#39;data&#39;] = sys.argv[1:]
    jsonArr = json.dumps(dict, ensure_ascii=False)
    print(jsonArr)
if __name__ == &#39;__main__&#39;:
    send()
2. system()

Laksanakan atur cara luaran dan paparkan output

Serupa dengan versi C fungsi sistem(), fungsi ini melaksanakan arahan yang ditentukan oleh parameter arahan dan mengeluarkan hasil pelaksanaan.

Jika PHP berjalan dalam modul pelayan, fungsi system() juga akan cuba memuat semula cache output pelayan web secara automatik selepas setiap baris output.

Jika anda ingin mendapatkan output mentah arahan tanpa sebarang pemprosesan, sila gunakan fungsi passthru().
system ( string $command [, int &$return_var ] ) : string

index.php

Versi asal test.py digunakan di sini dan kesan output adalah seperti berikut:

<?php
echo &#39;这是运行直接输出:&#39;;
$re = system(&#39;python ceshi.py&#39;);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
echo &#39;<br/>&#39;;
echo &#39;这是赋值输出:&#39;;
var_dump($re);
3. passthru( )

Laksanakan program luaran dan paparan output

Serupa dengan fungsi exec(), fungsi passthru() juga digunakan untuk melaksanakan perintah luaran (perintah) . Apabila perintah Unix yang dilaksanakan mengeluarkan data binari dan perlu dihantar terus ke penyemak imbas, fungsi ini perlu digunakan dan bukannya fungsi exec() atau system(). Biasa digunakan untuk melaksanakan arahan seperti pbmplus yang boleh terus mengeluarkan aliran imej. Dengan menetapkan Jenis Kandungan kepada imej/gif dan kemudian memanggil program pbmplus untuk mengeluarkan fail gif, anda boleh terus mengeluarkan imej tersebut kepada penyemak imbas daripada skrip PHP.

index.php

passthru ( string $command [, int &$return_var ] ) : void
Versi asal test.py digunakan di sini dan kesan output adalah seperti berikut:

echo &#39;这是运行直接输出:&#39;;
$re = passthru(&#39;python ceshi.py&#39;);
// $re = iconv(&#39;gbk&#39;, &#39;utf-8&#39;, $re);
echo &#39;<br/>&#39;;
echo &#39;这是赋值输出:&#39;;
var_dump($re);
(tutorial disyorkan:

Tutorial video PHP

)

Atas ialah kandungan terperinci Bagaimana untuk menjalankan skrip Python dalam program PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam