2015-11-25 10 views
22

PHP के लिए नया। एक PHP प्रोजेक्ट पर काम करना और मेरे php अनुप्रयोगों को डीबग करने में सक्षम होने के लिए xdebug सक्षम है। उत्पादन सर्वर में xdebug सक्षम नहीं है क्योंकि इसे किसी अन्य टीम द्वारा नियंत्रित किया जाता है। अपने स्थानीय मशीन पर, जब मैं संगीतकार चलाने यह मेरे लिए एक चेतावनी कहPHP संगीतकार xdebug चेतावनी

You are running composer with xdebug enabled. This has a major impact on 
runtime performance. 

मैं xdebug निष्क्रिय करने के लिए नहीं करना चाहती जब मैं विकासशील हूँ देता है। सिर्फ यह पुष्टि करना चाहता था कि देव पर्यावरण में चल रहे xdebug को कोई प्रभाव पर कंपोज़र को उत्पादन सर्वर पर ऐप के पुस्तकालय/प्रदर्शन को स्थापित करने पर कोई प्रभाव नहीं होना चाहिए।

+0

आप 'चलाने करो (उत्पादन सर्वर पर उत्पादन निर्भरता instaling के लिए) संगीतकार install' सीधे उत्पादन सर्वर पर, या आपकी स्थानीय मशीन पर एक एसएसएच-खोल में? XDebug सक्षम होने पर उत्तरार्द्ध धीमा हो जाएगा, लेकिन आपको XDebug की आवश्यकता हो सकती है उदा। PHPUnit ... – SpazzMarticus

उत्तर

25

मैं xdebug निष्क्रिय करने के लिए नहीं करना चाहती जब मैं विकासशील हूँ सेट करें। सिर्फ यह पुष्टि करना चाहता था कि देव पर्यावरण में चल रहे xdebug को कोई प्रभाव पर कंपोज़र को उत्पादन सर्वर पर ऐप के पुस्तकालय/प्रदर्शन को स्थापित करने पर कोई प्रभाव नहीं होना चाहिए।

Xdebug को लोड करने का एक बड़ा प्रभाव है। यह कंपोज़र को 3x या 4x तक चलाता है, भले ही प्रोफाइलिंग सुविधा सक्षम न हो।

दूसरे शब्दों में: xdebug डीबगिंग के लिए अमूल्य है, लेकिन संगीतकार का उपयोग और प्रसंस्करण समय को बढ़ाता है।


कैसे संगीतकार रन Xdebug निष्क्रिय करने के लिए?

मेरा सुझाव संगीतकार चलाने के लिए थोड़ा आमंत्रण सहायक लिखना है।

सहायक एक कस्टम php.ini के साथ PHP को कॉल करने वाला बैश या बैच स्क्रिप्ट है, विशेष रूप से संगीतकार के लिए कॉन्फ़िगर किया गया है। आइए इसे कॉल करें: php.ini-composer

आप अपने वर्तमान php.ini की प्रतिलिपि बना सकते हैं और इसे xdebug को हटाकर या इसे टिप्पणी करके संगीतकार चलाने के लिए समायोजित कर सकते हैं, जैसे: ;zend_extension = "/path/to/my/xdebug.so"

जब आप इसमें हों: memory_limit=-1 सेटिंग भी उपयोगी है।

पूर्ण आदेश की तरह लग रहा है तो विंडोज पर: php.exe -c php.ini-composer composer.phar %*

बस एक bash स्क्रिप्ट के लिए विचार क्लोन।


और आप संगीतकार अकसर किये गए सवाल में अपने प्रश्न का पूरा उत्तर पा सकते हैं।

https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer

यह जोड़ा गया है/बस कुछ ही घंटे पहले अपडेट किया गया।


कुछ विकल्प (बजाय अलग INI फ़ाइल का उपयोग करने का) भी here उल्लेख कर रहे हैं।

extension_dir = "D:/php/ext/" ;according to your system 
extension=php_openssl.dll 
memory_limit=-1 ;optional 

अब निम्नलिखित सामग्री के साथ cmz.bat नाम की एक फ़ाइल बनाने के लिए:

+0

बस पुन: पुष्टि करने के लिए - इसका कोई उत्पादन सर्वर पर सही ऐप की वास्तविक दौड़ पर कोई प्रभाव नहीं पड़ता है जहां xdebug इंस्टॉल नहीं है? मुझे संगीतकार धीमा नहीं लगता है। – user275157

+1

पुष्टि की। कोई प्रभाव नहीं, अगर लोड नहीं किया गया है! (इसके अतिरिक्त: आप अपने उत्पादन प्रणाली को अपने आवेदन द्वारा आवश्यक न्यूनतम न्यूनतम तक लोड किए गए एक्सटेंशन की संख्या को कम करके थोड़ा सा बढ़ा सकते हैं।) –

5

वेब स्क्रिप्ट के साथ, सीएलआई स्क्रिप्ट को भी धीमी गति से चलाने की उम्मीद है।

यदि आपको अतिरिक्त रनटाइम प्रदर्शन की आवश्यकता है, तो आप केवल XLIebug को CLI पर अक्षम कर सकते हैं। अपने PHP स्थापना इतना है कि यह CLI और अपने सर्वर के लिए अलग INI फ़ाइलों का उपयोग करता है, as this answer suggests.

1

निम्नलिखित सामग्री के साथ कहीं php-composer.ini नाम की एक फ़ाइल (संगीतकार के लिए न्यूनतम php config) बनाएँ। (तदनुसार पथ संपादित करें)

@ECHO OFF 
php -c "D:\php-composer.ini" "C:\ProgramData\ComposerSetup\bin\composer.phar" %* 

इस फ़ाइल को अपने सिस्टम पथ या अपनी परियोजना रूट में जोड़ें। अब के बजाय cmz का उपयोग करें और आप उस संदेश को नहीं देख पाएंगे और उम्मीद है कि संगीतकार की गति में वृद्धि होगी।

नोट: कुछ पैकेज को विशिष्ट PHP एक्सटेंशन की आवश्यकता है। आप उन्हें php-compsoer.ini फ़ाइल या जोड़कर --ignore-platform-reqs स्विच cmz.bat करने के लिए फ़ाइल

1

में जोड़ने के लिए Symfony 3.1 और पीएचपी 7.0 के एक ताजा डाउनलोड पर की जरूरत है, तो आप निम्न (यह संपादित होने अपने composer.phar फ़ाइल का पथ शामिल करने के लिए) को चला सकते हैं :

php -n -d extension=json.so -d extension=phar.so -d extension=pdo.so -d extension=ctype.so /path/to/composer update 

आप अपने composer.json फाइल करने के लिए किसी भी अतिरिक्त विक्रेताओं है, तो आपको पता चल सकता है कि वे एक विस्तार पर निर्भरता है, तो आप शामिल करने की ज़रूरत है कि उस सूची में -d extension=name_of_extension.so जोड़कर।

क्या हो रहा है -n ध्वज PHP डिफ़ॉल्ट के साथ चला जाता है - यह ini PHP कॉन्फ़िगरेशन फ़ाइलों को लोड नहीं करता है, इसलिए XDebug कभी लोड नहीं होता है। फिर -d झंडे में से प्रत्येक आपको गतिशील रूप से कॉन्फ़िगरेशन मान सेट करने की अनुमति देता है, ताकि आप एक्सटेंशन शामिल कर सकें।

+0

धन्यवाद, मैंने '-d extension = phar जैसे कई एक्सटेंशन को परिभाषित करने में बहुत लंबा समय बिताया। तो; एक्सटेंशन = pdo.so; 'या' -d एक्सटेंशन = phar.so, pdo.so; ' – mickadoo

0

संगीतकार के आधुनिक संस्करण सीएलआई एसएपीआई के लिए डिफ़ॉल्ट रूप से XDebug सक्षम होने के आसपास काम कर सकते हैं। यह XDebug एक्सटेंशन के साथ एक नई PHP प्रक्रिया को उत्पन्न करता है, यदि यह पता चला है तो अक्षम किया गया है।

आप निम्न वातावरण चर सेट करके इस व्यवहार को निष्क्रिय कर सकते हैं:

COMPOSER_ALLOW_XDEBUG=1 

दस्तावेज में यह मिल गया: https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer

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