วันอาทิตย์ที่ 22 กันยายน พ.ศ. 2556

How to call python script by php

โอเคไม่พูดมามาเริ่มกันเลย ความต้องการคือ เขียน php อยู่แต่อยากเรียก python script ขึ้นมาใช้งาน ถามว่าทำได้ไหม คำตอบคือ "สามารถทำได้ครับ" เรามาดูวิธีทำกัน

อันดับแรกสร้างไฟล์ Python ก่อน ตั้งชื่อว่า exampleCallByPHP.py โดยมีโค๊ดดังนี้
import sys
print "Begin of Python Script\n"
print "The passed arguments are ", sys.argv
print "Show all argument"
for i in xrange(len(sys.argv)):
    print "sys.argv["+str(i)+"] => "+str(sys.argv[i])
print "\nEnd of Python Script"

อธิบายโค๊ดดังนี้

  • บรรทัดที่ 3 เป็นการแสดง argument ทั้งหมดที่ถูกส่งมาจาก PHP
  • บรรทัดที่  5-6 เป็นการเข้าถึง argument ที่ละค่าโดยใช่ for loop
อันดับที่สองสร้างไฟล์ PHP ตั้งชื่อว่า exampleCallPython.php โดยมีโค๊ดดังนี้

<?php
$param1 = "Somchai";
$param2 = "Jaidee";
$param3 = 56;
$command = "/Python27/python exampleCallByPHP.py";
$command .= " $param1 $param2 $param3";
header('Content-Type: text/html; charset=utf-8');
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
$pid = popen($command,"r");
echo "<body><pre>";
while( !feof( $pid ) ) {
echo fread($pid, 256);
}
pclose($pid);
echo "</pre>";
echo "Script final";
?>

อธิบายโค๊ดดังนี้

  • $command แบ่งออกเป็น 3 ส่วน ส่วนที่ 1 คือ Path ที่ติดตั้ง Python ส่วนที่ 2 คือ Path และชื่อของไฟล์ Python ที่เขียนไว้ และส่วนที่ 3 คือ พารามิเตอร์ที่จะส่งไปพร้อมกับการเรียกไฟล์ Python ซึ่งส่วนที่ 3 ก็ไม่จำเป็นเสมอไป จะมีหรือไม่มีก็ได้
  • $pid = popen($command,"r"); คือการเรียกใช้ไฟล์ python ที่เราได้กำหนดไว้ในตัวแปร $command  ส่วน "r" คือโหมดการเรียกไฟล์ มีอยู่ 2 โหมดคือ r->อ่านอย่างเดียว, w->เขียนอย่างเดียว ส่วน $pid คือค่าที่รีเทิร์นมาจากการเรียกใช้ไฟล์ python นั่นคือสิ่งที่ไฟล์ python แสดงผลโดยคำสั่งการแสดงผลในไฟล์ python
  • while loop คือการแสดงค่าที่ได้รีเทิร์นมาจากไฟล์ python โดยเงื่อนไขของลูปคือวนไปเรื่อยๆจนหมดข้อมูลใน $pid และใช้คำสั่ง fread(file, length) ในการอ่าานค่าจาก $pid แล้วแสดงผลในหน้าเว็บ
ผลลัพธ์ที่แสดงที่หน้าเว็บเป็นดังรูป


ก็เป็นตัวอย่างเล็กๆ น้อยๆ ที่สามารถนำไปต่อยอดได้ หวังว่าคงจะเป็นประโยชน์นะครับ

2 ความคิดเห็น:

  1. Jackpot City Casino Site Review
    Jackpot City Casino Review: Slots, Mobile 샌즈카지노 & Casino Games ➤ Top Online Casinos ✓ New Player Bonuses หารายได้เสริม ✓ Fast 카지노사이트 withdrawals ☆ Fast Payouts.

    ตอบลบ
  2. Casinos Near Casinos in Las Vegas, NV - Mapyro
    Find Casinos Near Casinos in Las Vegas, NV, United States and find the 동두천 출장샵 best casinos to 광명 출장샵 stay 김포 출장샵 close to 충청남도 출장안마 them. 논산 출장안마

    ตอบลบ