2010-09-09 17 views
7

मैं हमेशा इस्तेमाल किया है:विंडोज़ में PHP फ़ंक्शन exec() से पीआईडी ​​कैसे प्राप्त करें?

$pid = exec("/usr/local/bin/php file.php $args > /dev/null & echo \$!"); 

लेकिन मैं एक XP आभासी मशीन का उपयोग कर रहा एक वेब अनुप्रयोग विकसित करने के लिए और मैं पता नहीं कैसे खिड़कियों में पीआईडी ​​निकलना है।

मैं एक cmd पर इस की कोशिश की:

C:\\wamp\\bin\\php\\php5.2.9-2\\php.exe "file.php args" > NUL & echo $! 

और यह निष्पादित फ़ाइल हो जाता है, लेकिन उत्पादन होता है "$!"

मैं var $ pid में पिड कैसे प्राप्त कर सकता हूं? (PHP का उपयोग करके)

+0

मुझे लगता है कि स्थानांतरित करने के लिए मतदान serverfault.com से सवाल मूल रूप से इसे "विंडोज कमांड लाइन पर प्रक्रिया आईडी कैसे प्राप्त करें" के लिए ध्वस्त किया जा सकता है। शायद superuser.com भी बेहतर फिट बैठता है? – Tomalak

उत्तर

0

आपको extra extension इंस्टॉल करना होगा, लेकिन Uniformserver's Wiki पर स्थित समाधान मिला।

अद्यतन

कुछ खोज आप tasklist जो संयोग से, तुम क्या आप के बाद कर रहे हैं पाने के लिए पीएचपी exec आदेश के साथ उपयोग करने के लिए सक्षम हो सकता है में लग सकता है के बाद।

+0

धन्यवाद, वैसे भी मुझे लगता है कि मैं सिर्फ लिनक्स आभासी बॉक्स पर एक सर्वर स्थापित करूंगा, मुझे बस अपने मुख्य ओएस पर एक वेबसर्वर नहीं होना चाहिए और केवल एक ही जीत पर था। – jarkam

+1

अपडेट किया गया, एक प्रोग्राम मिला जो एक्सपी में बनाया गया है जिसे 'टास्कलिस्ट' कहा जाता है जो आप चाहते हैं जो कर सकता है। –

7

मैं Pstools जो आप पृष्ठभूमि में एक प्रक्रिया बनाने और इसे पीआईडी ​​है पर कब्जा करने की अनुमति देता है का उपयोग कर रहा:

// use psexec to start in background, pipe stderr to stdout to capture pid 
exec("psexec -d $command 2>&1", $output); 
// capture pid on the 6th line 
preg_match('/ID (\d+)/', $output[5], $matches); 
$pid = $matches[1]; 

यह थोड़ा hacky है, लेकिन यह काम किया हो जाता है

+0

यह मेरे लिए काम करता था, हालांकि एक अतिरिक्त कंसोल विंडो थी जो किसी कारण से पॉप अप – relipse

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