जावा और पायथन में, आपके पास ProcessBuilder
या subprocess मॉड्यूल हैं जो आपको अनचाहे तारों का उपयोग करके आसानी से प्रक्रिया शुरू करने देते हैं। ["ls", "some unescaped directory name"]
- वे आपको शक्तिशाली उपकरण भी प्रदान करते हैं जैसे स्टडआउट, stderr से पढ़ने के लिए उपयोग। क्या PHP की कोई समतुल्य विशेषता है जो exec()
से अधिक बुद्धिमान और उपयोगी है?PHP में subprocess के बराबर कोई समकक्ष?
7
A
उत्तर
4
निकटतम बराबर है कि आप stdin
, stdout
, और stderr
के लिए पहुँच, दो तरह से संचार के साथ देता है, proc_open()
होगा।
<?php
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);
$cwd = '/tmp';
$env = array('some_option' => 'aeiou');
$process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);
if (is_resource($process)) {
// $pipes now looks like this:
// 0 => writeable handle connected to child stdin
// 1 => readable handle connected to child stdout
// Any error output will be appended to /tmp/error-output.txt
fwrite($pipes[0], '<?php print_r($_ENV); ?>');
fclose($pipes[0]);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
// It is important that you close any pipes before calling
// proc_close in order to avoid a deadlock
$return_value = proc_close($process);
echo "command returned $return_value\n";
}
?>
आप केवल stdout
और stdin
, आप popen()
उपयोग कर सकते हैं की जरूरत है:
यहाँ डॉक्स से उदाहरण दिया गया है।
के बाद से मैनुअल के बेकार है यह, मेरी संशोधित उदाहरण है:
<?php
$handle = popen('/path/to/executable', 'r');
$lines = [];
while (!feof($handle))
{
$lines[] = fgets($handle);
}
pclose($handle);
यह आउटपुट की लाइनों की एक सरणी में /path/to/executable
के उत्पादन में पढ़ा जाएगा।
आपने तर्कों से बचने के बारे में भी पूछा। आप escapeshellarg()
के साथ ऐसा कर सकते हैं:
$escapedArg = escapeshellarg($arg);
संबंधित मुद्दे
- 1. PHP पायथन के समकक्ष() के बराबर है?
- 2. पायथन subprocess Popen.communicate() Popen.stdout.read() के बराबर है?
- 3. क्या कोई PHP sqlite3_limit के बराबर है?
- 4. डार्ट समकक्ष Array.prototype.map() के बराबर?
- 5. सी # के लिए "विस्तारित" के बराबर कोई समकक्ष?
- 6. subprocess
- 7. क्या कोई PHP कम्पास के बराबर है?
- 8. किसी भी ReSharper एक्सकोड के बराबर समकक्ष?
- 9. ग्रूवी रूबी के लिए समकक्ष समकक्ष और कोई भी
- 10. कोई समकक्ष। =
- 11. PHP के समकक्ष दोस्त या आंतरिक
- 12. PHP $ _SERVER के बराबर पाइथन क्या है?
- 13. रूबी/रेल में PHP के print_r के बराबर है?
- 14. PHP में जावास्क्रिप्ट के decodeURIcomponent के बराबर क्या है?
- 15. पिरामिड: पिरामिड/पायथन में PHP फ्रेमवर्क में एमवीसी के बराबर?
- 16. PHP: अंतराल() संख्याओं के बराबर> = 2147483647
- 17. "->" php समान (a.k.a समकक्ष) में "।" है जावास्क्रिप्ट में?
- 18. क्या कोई जावा PHP के http_build_query फ़ंक्शन के बराबर है?
- 19. क्या पाइथन/डीजेगो में PHP के हैश_हैम के बराबर है?
- 20. जावा बराबर php के लिए HMAC-SHA1
- 21. जावास्क्रिप्ट समकक्ष() और toString() में सी # में बराबर है?
- 22. subprocess को रोकें। पाइथन
- 23. php die() के बराबर रेल?
- 24. एक पॉपन() subprocess
- 25. आरवीएम PHP के बराबर है?
- 26. PHP रूबी प्रतीक के बराबर PHP
- 27. सी # समकक्ष "एमकेलिंक/जे" के बराबर क्या है?
- 28. क्या PHP के array_key_exists के बराबर सी # # है?
- 29. पाइथन "php -s" के बराबर
- 30. जावास्क्रिप्ट PHP के बराबर विस्फोट()
ईमानदारी से PHP प्रक्रियाओं को चलाने के लिए नहीं बनाया गया है। –
वास्तव में? मैंने यही सोचा, हालांकि * आधुनिक PHP * में वे कहते हैं कि आप PHP को एक स्क्रिप्टिंग भाषा के रूप में उपयोग कर सकते हैं जैसे बैश - "PHP का उपयोग शक्तिशाली कमांड लाइन अनुप्रयोगों (जैसे बैश, रूबी, पायथन, आदि) के निर्माण के लिए भी किया जा सकता है। कई PHP डेवलपर्स इसका एहसास नहीं करते हैं और वास्तव में एक रोमांचक सुविधा पर चूक जाते हैं। " - http://shop.oreilly.com/product/0636920033868.do – NoBugs
सुनिश्चित नहीं है कि [popen] (http://php.net/manual/en/function.popen.php) आपके लिए सहायक है। – Jigar