Bagaimana untuk menjalankan skrip Python dalam program PHP

WBOY
Lepaskan: 2023-03-16 19:48:02
ke hadapan
2567 orang telah melayarinya

(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
Salin selepas log masuk

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);
Salin selepas log masuk

ceshi.py

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

(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);
Salin selepas log masuk

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()
Salin selepas log masuk
<. 🎜> 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()
Salin selepas log masuk
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
Salin selepas log masuk

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);
Salin selepas log masuk
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
Salin selepas log masuk
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);
Salin selepas log masuk
(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!

Label berkaitan:
php
sumber:jb51.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan