2010-04-28 8 views
8

मैं PHP से एक पायथन लिपि कॉल कर रहा हूं।PHP से पायथन कॉल करें और वापसी कोड प्राप्त करें

पायथन कार्यक्रम को पास किए गए तर्कों के अनुसार कुछ मूल्य वापस करना होगा।

#!/usr/bin/python 
import sys 

#get the arguments passed 
argList = sys.argv 

#Not enough arguments. Exit with a value of 1. 
if len(argList) < 3: 
    #Return with a value of 1. 
    sys.exit(1) 

arg1 = argList[1] 
arg2 = argList[2] 

#Check arguments. Exit with the appropriate value. 
if len(arg1) > 255: 
    #Exit with a value of 4. 
    sys.exit(4) 
if len(arg2) < 2: 
    #Exit with a value of 8. 
    sys.exit(8) 

#Do further coding using the arguments------ 

#If program works successfully, exit with a value of 0 

आप ऊपर कोड से देख सकते हैं, मेरा मूल उद्देश्य

    है:

    यहां नमूने अजगर कार्यक्रम है, जो आप मैं वर्तमान में क्या कर रहा हूँ की एक बुनियादी विचार दे देंगे तर्कों के आधार पर पाइथन प्रोग्राम के लिए

  1. कुछ मान (0,1,4,8 आदि) वापस करने के लिए।
  2. और फिर कॉलिंग PHP प्रोग्राम इन लौटाए गए मानों तक पहुंचने और उपयुक्त संचालन करने के लिए।

वर्तमान में मैंने उस उद्देश्य के लिए "sys.exit (n)" का उपयोग किया है।

क्या मैं sys.exit का उपयोग करने में सही हूं, या मुझे कुछ और उपयोग करने की आवश्यकता है?

और PHP में भी कौन सी विधि मौजूद है ताकि मैं पाइथन से रिटर्न कोड तक पहुंच सकूं?

लंबे प्रश्न के लिए क्षमा करें, लेकिन उम्मीद है कि यह तुम मेरी दुविधा

धन्यवाद एक टन

उत्तर

7

समझने PHP में करने में मदद मिलेगी, आप एक आदेश निष्पादित और exec का उपयोग कर लौटने कोड प्राप्त कर सकते हैं।

exec के लिए manual कहते तीसरे पैरामीटर, एक चर, जिसमें वापसी कोड संग्रहीत किया जाएगा है, उदाहरण के लिए

exec('python blibble.py', $output, $ret_code); 

$ret_code खोल वापसी कोड हो जाएगा, और $output की तर्ज की एक सरणी है पाठ std करने के लिए मुद्रित। उत्पादन।

यह आपके द्वारा वर्णित किसी भी रिटर्न कोड के लिए उपयुक्त उपयोग प्रतीत होता है, यानी 0 सफलता का संकेत देता है, और 0 विभिन्न प्रकार की त्रुटियों के लिए कोड हैं।

+0

वापसी मूल्य प्राप्त करने के लिए PHP फ़ंक्शन (निष्पादन) के लिए बहुत बहुत धन्यवाद। लेकिन, मुझे sys.exit (n) पर पुष्टि की भी आवश्यकता है। क्या मूल्य (एन) "$ ret_code" पर वापस किया जाएगा? या क्या मुझे अजगर कार्यक्रम को लौटने और निकालने का एक और तरीका उपयोग करना चाहिए? धन्यवाद फिर से – seaboy

+0

बस, पुष्टि की है कि sys.exit (n) खोल को मान देता है। लिनक्स में, इसे "echo $?" द्वारा आउटपुट किया जा सकता है। विंडोज़ में रहते हुए: "echo% ERRORLEVEL%"। "$ Ret_code" में इसके मान की पुष्टि नहीं कर सका, लेकिन यह मेरी समस्या के पायथन भाग को हल किया। धन्यवाद फिर से – seaboy

+0

हां, sys.exit मान को PHP exec कमांड द्वारा रिटर्न कोड पैरामीटर में संग्रहीत किया जाना चाहिए। मुझे पायथन को कॉल करने के बारे में पता नहीं है, लेकिन मैं इसके लिए जावा और अन्य आदेशों के साथ इसका उपयोग करता हूं जिसे मैं इस विधि के माध्यम से आमंत्रित करता हूं। – JAL

0

यह बाहर निकलने का सही उपयोग है()। यह भी देखें: http://docs.python.org/library/sys.html

+1

आपके लिए पुष्टि – seaboy

+0

चेक पर क्लिक करके उत्तर के रूप में इसे स्वीकार करने के लिए स्वतंत्र महसूस करें। – Jake

संबंधित मुद्दे