2009-06-29 14 views
6

मेरे पास एक PHP स्क्रिप्ट (news-generator.php) है, जिसमें, जब मैं इसे शामिल करता हूं, तो समाचार वस्तुओं का एक गुच्छा पकड़ता है और उन्हें प्रिंट करता है। अभी, मैं अपनी वेबसाइट (सीजीआई) के लिए पायथन का उपयोग कर रहा हूं। जब मैं PHP का उपयोग किया गया था, मैं "समाचार" पृष्ठ पर कुछ इस तरह इस्तेमाल किया:मैं पायथन में एक PHP स्क्रिप्ट कैसे शामिल करूं?

<?php 
print("<h1>News and Updates</h1>"); 
include("news-generator.php"); 
print("</body>"); 
?> 

(मैं सादगी के लिए उदाहरण में कटौती।)

वहाँ एक रास्ता मैं अजगर स्क्रिप्ट को निष्पादित कर सकता है (news-generator.php) और आउटपुट लौटाएं जो क्रॉस-प्लेटफॉर्म पर काम करेगा? इस तरह, मैं यह कर सकता था:

page_html = "<h1>News and Updates</h1>" 
news_script_output = php("news-generator.php") //should return a string 
print page_html + news_script_output 
+1

"मैंने सादगी के लिए उदाहरण को सरल बना दिया।" - इसके लिए आप और क्या सरल करेंगे? ;) –

+0

@musicfreak: giggles? दक्षता? सुंदरता? –

+1

मैंने उन लोगों के साथ काम किया है जिन्होंने अपनी अक्षमता को अस्पष्ट करने के लिए "उदाहरण को सरल बनाया"। मुझे आशा है कि यह मामला यहां नहीं है। –

उत्तर

9
import subprocess 

def php(script_path): 
    p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE) 
    result = p.communicate()[0] 
    return result 

# YOUR CODE BELOW: 
page_html = "<h1>News and Updates</h1>" 
news_script_output = php("news-generator.php") 
print page_html + news_script_output 
+0

एसएलटी के रूप में एकमात्र मुद्दा है, सीजीआई पर्यावरण को अनुकरण करना जो PHP चाहता है। – alecwh

7

PHP एक प्रोग्राम है। आप subprocess के साथ कोई प्रोग्राम चला सकते हैं।

कठिन हिस्सा पूरे सीजीआई पर्यावरण को अनुकरण कर रहा है जो PHP की अपेक्षा करता है।

+0

अच्छा बिंदु। निर्भर करता है कि आप किस प्रकार का PHP चला रहे हैं, मुझे लगता है। – Eli

+0

क्या PHP-CLI इस प्रकार के वातावरण की अपेक्षा करता है? –

+0

PHP सीजीआई बहुत सारे पर्यावरण की अपेक्षा करता है। सीएलआई को बहुत कम पर्यावरण सेटअप की आवश्यकता होती है। यहां निश्चित दस्तावेज़ है। http://www.php.net/manual/en/features.commandline.php। –

0

मुझे लगता है कि सबसे अच्छा जवाब अपाचे दोनों पृष्ठों को अलग से प्रस्तुत करना और फिर जावास्क्रिप्ट का उपयोग एक div में है कि पृष्ठ लोड करने के लिए किया जाएगा। आपके पास AJAX लोड की मामूली मंदी है लेकिन फिर आपको इसके बारे में चिंता करने की ज़रूरत नहीं है।

एक ओपन-सोर्स विजेट चीज है जो 1 पेज में कई भाषाओं को चलाएगी लेकिन मुझे याद नहीं है कि इसे क्या कहा जाता है।

0

आप सर्वर (localhost) से पृष्ठ प्राप्त करने के लिए urllib का उपयोग कर सकते हैं और php के लिए सही वातावरण में निष्पादित कर सकते हैं। सुंदर नहीं है, लेकिन यह काम करेगा। यदि आप इसे बहुत करते हैं तो यह प्रदर्शन समस्याओं का कारण बन सकता है।

1

शायद विषय से बाहर हो, लेकिन यदि आप इसे इस तरह से करना चाहते हैं जहां आप vars तक पहुंच सकते हैं और php स्क्रिप्ट (जैसे समाचार वस्तुओं की सरणी) द्वारा बनाए गए हैं, तो आपका सबसे अच्छा सर्वश्रेष्ठ निष्पादन करना होगा php स्क्रिप्ट, लेकिन स्ट्रिंग के रूप में php से आइटम्स की एक जेसन एन्कोडेड सरणी वापस करें, फिर जेसन उन्हें पायथन पक्ष पर डीकोड करें, और वहां अपनी एचटीएमएल पीढ़ी और पुनरावृत्ति करें।

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