2012-06-28 17 views
5

मैं कमांड निष्पादित करने के लिए exec() का उपयोग करता हूं, या तो लिनक्स या विंडोज़।PHP निष्पादन कमांड और लॉग आउटपुट बिना प्रतीक्षा किए

आप कमांड, लिनक्स और विंडोज़ कैसे निष्पादित करते हैं, और इंतजार किए बिना आउटपुट लॉग करते हैं?

मैं लिनक्स के लिए पता है, उत्पादन के लिए इंतजार नहीं कर रहे हैं: command* > /dev/null 2>/dev/null &

और लिनक्स के लिए उत्पादन लॉग इन करने की: command* > /path/to/log.txt 2>/path/to/error.txt

कैसे आप प्रवेश के बारे में जाने के लिए और एक आदेश में पृष्ठभूमि को स्थापित करेंगे? खिड़कियां कैसे दिखती हैं?

+1

आप फ़ाइल में आउटपुट रीडायरेक्ट सहित निष्पादित() कर सकते हैं, और फिर बाद में PHP के माध्यम से फ़ाइल को पढ़ सकते हैं। – ametren

+1

अंत में '&' चीजें पृष्ठभूमि में रखती हैं। लेकिन यह विंडोज़ में काम नहीं करता है, यह लिनक्स है। – hakre

+0

विंडोज़ में, मेरा मानना ​​है कि आप केवल 'स्टार्ट' – ametren

उत्तर

12

लिनक्स पर आप कर सकते हैं:

exec('command* > /dev/null 2>/dev/null &'); 

विंडोज पर आप कर सकते हैं:

pclose(popen('start /B cmd /C "command* >NUL 2>NUL"', 'r')); 

दोनों उदाहरण उत्पादन और त्रुटियों को अक्षम, उन /dev/null (लिनक्स) या NUL (विंडोज़) के लिए जाना जो इसका मतलब है कि वे "कहीं नहीं" संग्रहीत हैं।

आप इन्हें अपने सिस्टम पर वैध पथ के साथ प्रतिस्थापित कर सकते हैं।

लिनक्स पर, & अंत में इसे पृष्ठभूमि में रखता है। खिड़कियों पर यह अधिक जटिल है और प्रक्रियाओं का आह्वान करने के लिए start और cmd की आवश्यकता है ताकि धाराओं के पुनर्निर्देशन की अनुमति मिल सके।

+0

का उपयोग करते हैं, मैं इसे – user1105430

+2

पर लॉग ऑन करना चाहता हूं, आप एक फ़ाइल में आउटपुट भेज सकते हैं, और उसके बाद लॉग फ़ाइल –

+0

+1 जो मैं सोच रहा था – ametren

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