2009-05-21 15 views
7

मैं बैच फ़ाइल की तरह, किसी अन्य PHP स्क्रिप्ट के भीतर से कई PHP स्क्रिप्ट कैसे चला सकता हूं? मुझे नहीं लगता कि शामिल काम करेगा, अगर मैं समझता हूं कि क्या शामिल है; क्योंकि मैं जो भी फाइलें चला रहा हूं, वह कुछ कार्यों को फिर से शुरू कर देगा, आदि। मैं जो चाहता हूं वह प्रत्येक नई PHP स्क्रिप्ट को निष्पादित करना है जैसे कि यह एक साफ, ताजा ढेर में है, जिसमें वेरिएबल्स, फ़ंक्शंस इत्यादि का कोई ज्ञान नहीं है। इससे पहले आया था।मैं PHP स्क्रिप्ट (जैसे बैच फ़ाइल) के भीतर से कई PHP स्क्रिप्ट कैसे चला सकता हूं?

अद्यतन: मुझे यह उल्लेख करना चाहिए था कि स्क्रिप्ट विंडोज पर चल रही है, लेकिन वेब सर्वर पर नहीं।

उत्तर

10

आप प्रत्येक स्क्रिप्ट को बाहरी कमांड के रूप में आमंत्रित करने के लिए exec() फ़ंक्शन का उपयोग कर सकते हैं।

उदाहरण के लिए, अपनी स्क्रिप्ट कर सकता है:

<?php 

exec('php -q script1.php'); 
exec('php -q script2.php'); 

?> 

Exec इसके आसपास के कुछ सुरक्षा के मुद्दों है, लेकिन लगता है कि यह आप के लिए काम कर सकते हैं यह लग रहा है।

+1

क्या करता है? क्या यह अभी भी प्रासंगिक है? मैं मैन पेज देख रहा था और यह चुपचाप निष्पादित करता है। इसका क्या मतलब है? उत्पादन या कुछ दबाता है? – Fallenreaper

6

// उपयोग कार्यकारी http://www.php.net/manual/en/function.exec.php

<?php 

exec('/usr/local/bin/php somefile1.php'); 
exec('/usr/local/bin/php somefile2.php'); 

?> 

पुराने दिनों मैं एक फ्रेम प्रत्येक फ़ाइल के लिए एक लिंक युक्त बनाने की तरह कुछ किया है में। फ्रेमसेट को कॉल करें, और आप सभी स्क्रिप्ट को कॉल कर रहे हैं। आप इन दिनों iframes या AJAX के साथ ऐसा ही कर सकते हैं।

3

exec() उपयोग करने के लिए एक अच्छा काम है, लेकिन आपको मूल स्क्रिप्ट के साथ जाने के लिए प्रक्रिया को समाप्त होने तक प्रतीक्षा करनी होगी। यदि आप प्रक्रियाओं का एक बैच कर रहे हैं जहां प्रत्येक प्रक्रिया में थोड़ा समय लगता है, तो मैं popen() का उपयोग करने का सुझाव दूंगा।

चर आप प्राप्त एक पाइप जो आप एक समय में प्रक्रियाओं की एक मुट्ठी के माध्यम से जाने के लिए अनुमति देता करने के लिए एक सूचक बनाता है, उन्हें एक सरणी में भंडारण, और फिर उन सभी धारावाहिक गति के साथ तक पहुँचने के बाद वे सब समाप्त (ज्यादा कर रहे हैं अधिक समवर्ती रूप से) steam_get_contents() का उपयोग कर।

यह विशेष रूप से उपयोगी है अगर आप एपीआई कॉल या चल रहे स्क्रिप्ट बना रहे हैं जो स्मृति-गहन या कम्प्यूटेशनल गहन नहीं हो सकता है लेकिन प्रत्येक को पूरा करने के लिए महत्वपूर्ण प्रतीक्षा की आवश्यकता है।

3

यदि आपको उन स्क्रिप्ट से किसी भी रिटर्न परिणाम की आवश्यकता है, तो आप system फ़ंक्शन का उपयोग कर सकते हैं।

$result = system('php myscript.php'); 
$otherresult = system('php myotherscript.php'); 
संबंधित मुद्दे