Hướng dẫn can we link php and python? - chúng ta có thể liên kết php và python không?

Tôi có 2 hệ thống, giao diện tôi xây dựng với PHP và máy được xây dựng với Python vì tôi sử dụng mờ trong Python.

Tôi phải thử lấy dữ liệu cụ thể với PHP và công việc đó

Và tôi đã tạo ra một chức năng với Python để nhận một biến và công việc đó

Nhưng tôi có một vấn đề

Vấn đề là, làm thế nào để ném một variabel từ MySQL với PHP và xử lý nó bằng Python?

Sau khi kết thúc quá trình, làm thế nào để ném kết quả cho PHP và sau đó gửi đến cơ sở dữ liệu MySQL?

Mã trong PHP như thế này, mã là lấy dữ liệu từ SQL

function fuzzy($id = '')
    {   
        $data_sg1 = core::selectWhereCollums('area_proses','default','sg1',array('id'=>$id));
        $data_sg2 = core::selectWhereCollums('area_proses','default','sg2',array('id'=>$id));
        $data_sg3 = core::selectWhereCollums('area_proses','default','sg3',array('id'=>$id));


        $this->session->set_flashdata('success','success');
        redirect('area_proses');
    }

Và mã trong Python như thế này

def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
    sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
    sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
    sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')

---------------------
--------------------

####################################################
#Masukan
start_time = time.time()
a = float(input("Masukan SG1: "))
b = float(input("Masukan SG2: "))
c = float(input("Masukan SG3: "))

z = hitung_fuzzy(a,b,c)

print ("--------------------------------\n")
print ("Hasil Perhitungan:\n")
print (z)
print ("--------------------------------\n")
print ("Waktu proses adalah :\n")
print("%s detik\n" % (time.time() - start_time))
print ("--------------------------------\n")
raw_input("Tekan enter untuk keluar")

Khám phá cách thiết lập một máy chủ PHP nhẹ để xử lý các yêu cầu Python

Python là một ngôn ngữ tuyệt vời để viết logic phức tạp với các quy tắc cú pháp sạch sẽ và nghiêm ngặt của nó, và cũng thực hiện một công việc tuyệt vời trong việc quản lý trừu tượng thông qua các tính năng như mô tả và trang trí. Nó rất khó để di chuyển đi


Để gọi tệp Python từ trong tệp PHP, bạn cần gọi nó bằng hàm shell_exec.

Ví dụ

<?php
    $command = escapeshellcmd('/usr/custom/test.py');
    $output = shell_exec($command);
    echo $output;
?>

Điều này sẽ gọi kịch bản. Nhưng trong tập lệnh của bạn ở đầu, bạn cũng cần chỉ định trình thông dịch. Vì vậy, trong tệp PY của bạn, hãy thêm dòng sau ở trên cùng:

#!/usr/bin/env python

Ngoài ra, bạn cũng có thể cung cấp trình thông dịch khi thực hiện lệnh.

Ví dụ

<?php
    $command = escapeshellcmd('python3 /usr/custom/test.py');
    $output = shell_exec($command);
    echo $output;
?>

Hướng dẫn can we link php and python? - chúng ta có thể liên kết php và python không?

Điều này sẽ gọi kịch bản. Nhưng trong tập lệnh của bạn ở đầu, bạn cũng cần chỉ định trình thông dịch. Vì vậy, trong tệp PY của bạn, hãy thêm dòng sau ở trên cùng:

  • Ngoài ra, bạn cũng có thể cung cấp trình thông dịch khi thực hiện lệnh.
  • Cập nhật vào ngày 13 tháng 12 năm 2019 10:47:39
  • Câu hỏi và câu trả lời liên quan
  • Tải xuống tệp thông qua cuộc gọi AJAX trong PHP
  • Làm thế nào để gọi mô -đun Python từ dòng lệnh?
  • Làm thế nào để tìm và thay thế trong một tệp văn bản bằng Python?
  • Làm thế nào để biết vị trí hiện tại trong một tệp trong Python?
  • Làm thế nào để lấy tên tệp từ một đường dẫn trong PHP?
  • Làm thế nào chúng ta có thể gọi chức năng Python từ MATLAB?
  • Làm thế nào để gọi một hàm từ một chuỗi được lưu trữ trong một PHP biến?
  • Đọc dòng cuối cùng từ tệp trong PHP
  • Làm thế nào tôi có thể lấy một tệp python từ một tệp python khác?
  • Tệp PHP: //
  • Làm thế nào để gọi các chức năng C ++ từ Java?
  • Làm thế nào để tạo một từ điển Python từ tệp văn bản?
  • Làm thế nào để hiển thị lỗi trong tệp PHP?

Hướng dẫn can we link php and python? - chúng ta có thể liên kết php và python không?

Chúng ta đều biết sức mạnh của MySQL - một trong những cơ sở dữ liệu nguồn mở được sử dụng nhiều nhất và một thách thức đối với các sản phẩm độc quyền của thể loại này. Python và PHP là những ngôn ngữ kịch bản nổi tiếng. Chúng tôi kết hợp hai sức mạnh này trong bài viết này. Vì vậy, buộc dây an toàn của bạn, và tận hưởng chuyến đi!

Như bạn đã biết, có nhiều mô -đun và API trong Python. Đối với cơ sở dữ liệu, có DB-API, giao diện lập trình ứng dụng cơ sở dữ liệu. Để sử dụng API này với MySQL, bạn cần phải có trình điều khiển MySQLdb. Nó được xây dựng thành các phiên bản muộn hơn 2,3. Bạn cũng có thể tải xuống từ trang Dự án SourceForge của nó và cài đặt nó với các lệnh sau:

# tar -xvf foldername.tar.gz
# cd path-to-extracted-folder
#python setup.py install

Lưu ý: Tôi đang sử dụng Ubuntu 10.04 32 bit trên máy tính xách tay của mình, với Python 2.7 và Php 5.3.2. Vì vậy, dữ liệu được cung cấp là liên quan đến cấu hình này. I am using Ubuntu 10.04 32-bit on my laptop, with Python 2.7 and PHP 5.3.2. So the data provided is with respect to this configuration.

Truy cập MySQL thông qua DB-API bằng cách sử dụng MySQLdb bao gồm các bước sau:

  1. Nhập mô -đun MySQLdb.
  2. Mở kết nối đến máy chủ.
  3. Chạy các truy vấn của bạn.
  4. Đóng kết nối.

Chúng tôi sẽ thực hiện các bước này trong một kịch bản

def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
    sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
    sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
    sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')

---------------------
--------------------

####################################################
#Masukan
start_time = time.time()
a = float(input("Masukan SG1: "))
b = float(input("Masukan SG2: "))
c = float(input("Masukan SG3: "))

z = hitung_fuzzy(a,b,c)

print ("--------------------------------\n")
print ("Hasil Perhitungan:\n")
print (z)
print ("--------------------------------\n")
print ("Waktu proses adalah :\n")
print("%s detik\n" % (time.time() - start_time))
print ("--------------------------------\n")
raw_input("Tekan enter untuk keluar")
1:

import MySQLdb                                    #1
connection=MySQLdb.connect(host="servername", user="username", passwd="password", db="databasename")  #2
cur=connection.cursor()                           #3
cur.execute("create table lfy(name varchar(40), author varchar(40))")  #4
cur.execute("insert into lfy values('Foss Bytes','LFY Team')")         #5
cur.execute("insert into lfy values('Connecting MySql','Ankur Aggarwal')")
cur.execute("select * from lfy")                  #6
multiplerow=cur.fetchall()                        #7
print “Displaying All the Rows:  “, multiplerow
print multiplerow[0]
cur.execute("select * from lfy")
row=cur.fetchone()                                #8
print  “Displaying the first row: “, row
print "No of rows: ", cur.rowcount                #9
cur.close()                                       #10
connection.close()                                #11

Hình 1 dưới đây cho thấy đầu ra của tập lệnh Python.

Hướng dẫn can we link php and python? - chúng ta có thể liên kết php và python không?
Hình 1: Đầu ra của tập lệnh Python

Một vài ghi chú liên quan đến mã trên:

  1. Chúng tôi đã nhập mô -đun MySQLdb để sử dụng API cơ sở dữ liệu.
  2. Chúng tôi đã kết nối với máy chủ MySQL bằng cách gọi hàm
    def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
        sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
        sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
        sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')
    
    ---------------------
    --------------------
    
    ####################################################
    #Masukan
    start_time = time.time()
    a = float(input("Masukan SG1: "))
    b = float(input("Masukan SG2: "))
    c = float(input("Masukan SG3: "))
    
    z = hitung_fuzzy(a,b,c)
    
    print ("--------------------------------\n")
    print ("Hasil Perhitungan:\n")
    print (z)
    print ("--------------------------------\n")
    print ("Waktu proses adalah :\n")
    print("%s detik\n" % (time.time() - start_time))
    print ("--------------------------------\n")
    raw_input("Tekan enter untuk keluar")
    
    3. Các tham số cần thiết là tên máy chủ, tên người dùng MySQL, mật khẩu MySQL và cơ sở dữ liệu bạn muốn sử dụng.
  3. Để truy xuất kết quả truy vấn, chúng tôi đã tạo
    def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
        sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
        sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
        sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')
    
    ---------------------
    --------------------
    
    ####################################################
    #Masukan
    start_time = time.time()
    a = float(input("Masukan SG1: "))
    b = float(input("Masukan SG2: "))
    c = float(input("Masukan SG3: "))
    
    z = hitung_fuzzy(a,b,c)
    
    print ("--------------------------------\n")
    print ("Hasil Perhitungan:\n")
    print (z)
    print ("--------------------------------\n")
    print ("Waktu proses adalah :\n")
    print("%s detik\n" % (time.time() - start_time))
    print ("--------------------------------\n")
    raw_input("Tekan enter untuk keluar")
    
    4, một đối tượng của lớp
    def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
        sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
        sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
        sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')
    
    ---------------------
    --------------------
    
    ####################################################
    #Masukan
    start_time = time.time()
    a = float(input("Masukan SG1: "))
    b = float(input("Masukan SG2: "))
    c = float(input("Masukan SG3: "))
    
    z = hitung_fuzzy(a,b,c)
    
    print ("--------------------------------\n")
    print ("Hasil Perhitungan:\n")
    print (z)
    print ("--------------------------------\n")
    print ("Waktu proses adalah :\n")
    print("%s detik\n" % (time.time() - start_time))
    print ("--------------------------------\n")
    raw_input("Tekan enter untuk keluar")
    
    5, sẽ chịu trách nhiệm thực thi và tìm nạp.
  4. def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
        sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
        sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
        sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')
    
    ---------------------
    --------------------
    
    ####################################################
    #Masukan
    start_time = time.time()
    a = float(input("Masukan SG1: "))
    b = float(input("Masukan SG2: "))
    c = float(input("Masukan SG3: "))
    
    z = hitung_fuzzy(a,b,c)
    
    print ("--------------------------------\n")
    print ("Hasil Perhitungan:\n")
    print (z)
    print ("--------------------------------\n")
    print ("Waktu proses adalah :\n")
    print("%s detik\n" % (time.time() - start_time))
    print ("--------------------------------\n")
    raw_input("Tekan enter untuk keluar")
    
    6 thực thi truy vấn để tạo một bảng có tên
    def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
        sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
        sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
        sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')
    
    ---------------------
    --------------------
    
    ####################################################
    #Masukan
    start_time = time.time()
    a = float(input("Masukan SG1: "))
    b = float(input("Masukan SG2: "))
    c = float(input("Masukan SG3: "))
    
    z = hitung_fuzzy(a,b,c)
    
    print ("--------------------------------\n")
    print ("Hasil Perhitungan:\n")
    print (z)
    print ("--------------------------------\n")
    print ("Waktu proses adalah :\n")
    print("%s detik\n" % (time.time() - start_time))
    print ("--------------------------------\n")
    raw_input("Tekan enter untuk keluar")
    
    7.
  5. Chúng tôi đã chèn các giá trị vào bảng
    def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
        sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
        sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
        sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')
    
    ---------------------
    --------------------
    
    ####################################################
    #Masukan
    start_time = time.time()
    a = float(input("Masukan SG1: "))
    b = float(input("Masukan SG2: "))
    c = float(input("Masukan SG3: "))
    
    z = hitung_fuzzy(a,b,c)
    
    print ("--------------------------------\n")
    print ("Hasil Perhitungan:\n")
    print (z)
    print ("--------------------------------\n")
    print ("Waktu proses adalah :\n")
    print("%s detik\n" % (time.time() - start_time))
    print ("--------------------------------\n")
    raw_input("Tekan enter untuk keluar")
    
    7.
  6. Chúng tôi đã lấy tất cả các giá trị trong bảng
    def hitung_fuzzy(masukan_sg1, masukan_sg2, masukan_sg3):
        sg1 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg1')
        sg2 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg2')
        sg3 = fuzz.Antecedent(np.arange(0, 5, 1), 'sg3')
    
    ---------------------
    --------------------
    
    ####################################################
    #Masukan
    start_time = time.time()
    a = float(input("Masukan SG1: "))
    b = float(input("Masukan SG2: "))
    c = float(input("Masukan SG3: "))
    
    z = hitung_fuzzy(a,b,c)
    
    print ("--------------------------------\n")
    print ("Hasil Perhitungan:\n")
    print (z)
    print ("--------------------------------\n")
    print ("Waktu proses adalah :\n")
    print("%s detik\n" % (time.time() - start_time))
    print ("--------------------------------\n")
    raw_input("Tekan enter untuk keluar")
    
    7 thông qua truy vấn
    <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    0.
  7. <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    1 sẽ tìm nạp tất cả các kết quả của truy vấn và trả lại chúng dưới dạng danh sách lồng nhau.
  8. <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    2 sẽ lấy một hàng cùng một lúc. Bạn có thể tự hỏi tại sao chúng tôi lại thực hiện truy vấn
    <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    0 một lần nữa - bởi vì
    <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    4 đã tìm được tất cả các kết quả của truy vấn trước đó và gọi
    <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    5 sẽ trả về
    <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    6.
  9. Thuộc tính
    <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    7 cho chúng tôi biết số lượng hàng được trả về bởi truy vấn.
  10. Chúng tôi đã đóng đối tượng con trỏ, giải phóng các tài nguyên mà nó nắm giữ.
  11. Chúng tôi đã đóng kết nối. Luôn nhớ đóng các kết nối; Nếu không, nó có thể là một rủi ro bảo mật lớn.

Lưu ý: Python là một ngôn ngữ được giải thích, nó thực thi từng dòng mã. Nếu một lỗi xảy ra ở dòng thứ 8, sau đó, nó đã thực hiện bảy dòng đầu tiên, tạo bảng và chèn các mục. Kết nối cũng vẫn mở. Do đó, tôi khuyên bạn nên áp dụng lỗi và xử lý ngoại lệ trong khi sử dụng cơ sở dữ liệu. Python being an interpreted language, it executes code line by line. If an error occurred on the 8th line, by then, it has executed the first seven lines, creating the table and inserting entries. The connection also remains open. Therefore, I recommend you adopt error and exception handling while using databases.

Kết nối MySQL với PHP

PHP rất phổ biến cho kịch bản phía máy chủ và cơ sở dữ liệu MySQL được sử dụng rộng rãi để lưu trữ dữ liệu được sử dụng trong các trang động. Kết nối với MySQL từ PHP khá dễ dàng, với các chức năng được xây dựng; Nó tuân theo bốn quy tắc tương tự chúng ta đã thảo luận trong phần Python. Chúng tôi sẽ thực hiện các nhiệm vụ cơ bản tương tự như kịch bản Python; Vì vậy, trước khi thử mã bên dưới, hãy bỏ bảng trước đó. Tại đây, tập lệnh PHP của chúng tôi,

<?php
    $command = escapeshellcmd('/usr/custom/test.py');
    $output = shell_exec($command);
    echo $output;
?>
8:

<?php
$connection=mysql_connect("servername","username","password") or die("connectivity failed"); #1
mysql_select_db("database name",$connection);       #2
$create="create table lfy(name varchar(50), author varchar(50))";
mysql_query($create,$connection);                   #3
$insert1= "insert into lfy values('Foss Bytes','LFY Team')";
$insert2= "insert into lfy values('Connection Mysql','Ankur Aggarwal')";
mysql_query($insert1,$connection);
mysql_query($insert2,$connection);
$fetch= mysql_query("select * from lfy");
while($row=mysql_fetch_array($fetch))               #4
{
  print_r($row);                                    #5
}
mysql_close($connection);                           #6
?>

Một lời giải thích chi tiết về kịch bản trên được đưa ra dưới đây:

  1. Nếu kết nối với MySQL không thành công, chúng tôi sử dụng chức năng
    <?php
        $command = escapeshellcmd('/usr/custom/test.py');
        $output = shell_exec($command);
        echo $output;
    ?>
    9 làm kỹ thuật xử lý lỗi, để dừng xử lý trang. Đối tượng kết nối được chuyển cho các chức năng liên quan đến MYSQL khác để sử dụng.
  2. Chúng tôi đã chọn cơ sở dữ liệu mà chúng tôi muốn sử dụng.
  3. Chúng tôi đã sử dụng
    #!/usr/bin/env python
    0 để thực hiện các truy vấn.
  4. #!/usr/bin/env python
    1 sẽ tìm nạp kết quả của truy vấn dưới dạng một mảng. Chúng tôi đã sử dụng vòng lặp
    #!/usr/bin/env python
    2 để hiển thị kết quả.
  5. Để hiển thị dữ liệu, chúng tôi đã sử dụng
    #!/usr/bin/env python
    3, sẽ hiển thị toàn bộ hàng trong một lần. Để truy cập các trường riêng lẻ, hãy sử dụng chỉ mục chuỗi của tên trường, như
    #!/usr/bin/env python
    4, v.v. Xem ảnh chụp màn hình đầu ra (Hình 2) để hiểu rõ hơn.
  6. Chúng tôi đã đóng kết nối với máy chủ MySQL.
Hướng dẫn can we link php and python? - chúng ta có thể liên kết php và python không?
Hình 2: Đầu ra của tập lệnh PHP

Kết nối với một cơ sở dữ liệu là dễ dàng! Vì vậy, hãy bắt đầu chơi với cơ sở dữ liệu của bạn thông qua kịch bản :-)

Ankur Aggarwal

Tác giả thích khám phá các công nghệ nguồn mở và thích lập trình trong C, C ++, Java và Python. Một cái đầu kim loại trong trái tim, đôi khi anh ấy thích thử tay trên cây đàn guitar.

Tôi có thể sử dụng PHP và Python cùng nhau không?

Vâng, nó sẽ hoạt động, và mức độ rủi ro của nó phụ thuộc vào mức độ thực hiện của bạn tốt như thế nào.Điều này là hoàn toàn chấp nhận được nếu được thực hiện chính xác.Tôi đã tích hợp thành công PHP và C, khi PHP đơn giản là quá chậm để thực hiện các tác vụ thích hợp nhất định trong thời gian thực (IIRC, PHP chậm hơn 7 lần so với đối tác C., and how risky it is depends on how good your implementation is. This is perfectly acceptable if done correctly. I have successfully integrated PHP and C, when PHP was simply too slow to do certain niche tasks in real time (IIRC, PHP is 7 times slower than its C counterpart).

Làm thế nào để Python tích hợp mô hình PHP?

Có thể gọi đây là tập lệnh Python từ mã PHP ?..
Tạo một hàng đợi, trong đó tập lệnh PHP của bạn gửi các mục công việc mà tập lệnh Python của bạn đọc, thực hiện công việc và sau đó cập nhật bảng trạng thái ..
Tạo API cho tập lệnh Python của bạn mà tập lệnh PHP của bạn (hoặc bất kỳ tập lệnh nào khác) có thể tiêu thụ ..

Cái nào là python hay PHP tốt nhất?

Python tốt hơn PHP trong dự án dài hạn.PHP có đường cong học tập thấp, thật dễ dàng để bắt đầu với PHP.So sánh với Php Python có số lượng khung thấp hơn.Những người phổ biến là django, bình.. PHP has low learning curve, it is easy to get started with PHP. Compare to PHP Python has lower number of Frameworks. Popular ones are DJango, Flask.