কমান্ড লাইন পিএইচপি স্ক্রিপ্টের জন্য এক্সডিবুগ প্রোফাইলার কীভাবে ট্রিগার করবেন?


194

এক্সডিবাগ কনফিগারেশন নির্দেশনা "xdebug.profiler_enable_trigger" অফার করে যা HTTP এর মাধ্যমে স্ক্রিপ্ট কল করার সময় GET বা POST পরামিতি "XDEBUG_PROFILE" পেরিয়ে প্রোফাইলিং সক্রিয় করতে দেয়। আপনি যদি আপনার সমস্ত স্ক্রিপ্টগুলির জন্য প্রোফাইলিং না চান তবে সর্বদা আপনার পিএইচপি কনফিগারেশনটি পরিবর্তন না করে শুধুমাত্র কয়েকটি বিশেষ ক্ষেত্রে ব্যবহার করা সহজ হয়।

কমান্ড লাইন পিএইচপি প্রোগ্রামগুলির জন্য একই আচরণ অর্জনের কোনও উপায় আছে? কমান্ড লাইন আর্গুমেন্ট হিসাবে "XDEBUG_PROFILE" পাস করার চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি।

সাধারণভাবে, প্রোফাইলিং কমান্ড লাইন পিএইচপি ভাল কাজ করে তবে আমি ব্রাউজার এবং এইচটিটিপি সার্ভারের মতো প্রতি কল-নমনীয়তা পেতে চাই।

কোনও পরামর্শ?


দুঃখিত, আমি এটি চেষ্টাও করছি কিন্তু আমি তা পাই না। "XDEBUG_PROFILE" প্যারামিটারে কী হওয়া উচিত?
Andresch Serj

প্যারামিটারে যতক্ষণ আছে তা যতক্ষণ না উপস্থিত থাকে ততক্ষণ বিষয়টি বিবেচনা করে না।
স্বাওয়ারেসুপ

এক্সডিবেগ বাগ ট্র্যাকারে একটি এক্সডিবিউজিপ্রোফিল এনভায়রনমেন্ট ভেরিয়েবলের সমর্থনের অভাব বগ 413।
outis

উত্তর:


257

আপনার সাথে INI এ সেটিংস পাস করতে পারেন -dপতাকা: php -d xdebug.profiler_enable=On script.php


39
* স্নো ভিত্তিক সিস্টেমে, আপনি এই একটি বিট ব্যবহার করা সহজ যেমন উপনাম, তৈরি করে তুলতে পারে: alias phpp="php -d xdebug.profiler_enable=1"। আপনি যখন প্রোফাইলটি ব্যবহার করতে চান না কেবল phpতখনই ব্যবহার করুন এবং আপনি কখন ব্যবহার করবেন phpp
জে.সি. ইয়ামোকোস্কি

14
আমি যা ডিরেক্টরি আমি প্রোফাইলার আউটপুট হিসাবে ভাল সংরক্ষণ করা, তাই এই আমার জন্য woked চেয়েছিলেন নির্দিষ্ট করার ছিল: alias xphp="php -d xdebug.profiler_enable=On -d xdebug.profiler_output_dir=."। এটি সর্বদা আপনার বর্তমান ওয়ার্কিং ডিরেক্টরিতে ডিবাগ আউটপুট সংরক্ষণ করে।
লার্স ন্যাস্ট্রিম

হ্যাঁ, আমি উইন 7 এনভায়ারভ্যামেন্টে Eclipse এবং XAMPP এর অধীনে। এটা কাজ করে।
gouchaoer

4
Windows এ, আপনি একটি Dir আপনার পাথ তৈরি হতে পারে phpp.cmdফাইল, ধারণকারী php -d xdebug.profiler_enable=On %*তারপর আপনি কেবল চালাতে পারেন phpp <args>
গ্রাস ডাবল

43

আমি উবুন্টু / নেটবিনে এই কাজটি পেয়েছি:

  • /etc/php5/apache2/php.ini ফাইল থেকে xdebug কনফিগারেশন লাইনগুলি /etc/php5/cli/php.ini এ অনুলিপি করা হচ্ছে
  • ডিবাগ সেশনের নামের সাথে একটি পরিবেশের ভেরিয়েবল নির্ধারণ করা (আপনি এটি ডিবাগিং শুরু করার সময় পৃষ্ঠাগুলির ইউআরএল থেকে ক্যোয়ারী স্ট্রিং থেকে এটি পেতে পারেন) কমান্ডটি হ'ল এক্সডিবিউজি_সিএনএফআইজি = "আদর্শকি = নেটবিয়ানস-এক্সডিবাগ"

তারপরে এটি কেবল নেটবিনে ডিবাগিং শুরু করার এবং কমান্ড লাইনে "php myscript.php" করার একটি ঘটনা of


2
দ্রষ্টব্য: আপনি যদি নিজের ডিবাগারটি শুনতে চান এবং কোনও পিএইচপি কমান্ড দিয়ে ট্রিগার না করতে চান তা শেষ করার পরে আপনি কেবল ব্যবহার করতে পারেন: "আনসেট এক্সডিবিউজি_কনফিগ"।
ড্যান লামান্না

এটি আসলে আমার জন্য কাজ করছে যখন উপরের উত্তরটি নয় ;-)
জনাথন লিউটি

4
এটি ডিবাগিং (স্ক্রিপ্টের মাধ্যমে পদক্ষেপ) সম্পর্কে। প্রশ্নটি প্রোফাইলিং সম্পর্কে ছিল (স্ক্রিপ্টের পারফরম্যান্স বিশ্লেষণ, কোন ফাংশনগুলিতে দীর্ঘ সময় লাগে ইত্যাদি ইত্যাদি)
ম্যাথু ফ্ল্যাশেন

32

রিমোট ওয়েবসারভারে পিএইচপিস্টোরমের সাথে আমি এই কমান্ডটি ব্যবহার করি:

XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` myscript.php

যেখানে server_nameপিএইচপিস্টোরম প্রকল্পের কনফিগারেশনে সার্ভারের নাম


5
আমি এটি .বাশ_লিয়াস alias xphp="XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=example.com" php -d memory_limit=1G -d xdebug.remote_host=প্রতিধ্বনিতে যুক্ত করেছি $ এসএসএইচ_সিএলআইএনটি | কাট-ডি \ "= \" -ফ 2 | অজক '{মুদ্রণ $ 1}' "তাই আমি যখন ডিবাগ করতে চাই তখন আমি পিএইচপি পরিবর্তে এক্সপিএফপি ব্যবহার করি
অলিভার নাদজ

18

এক্সডিবাগ রিমোট ডিবাগিং পৃষ্ঠাতে বর্ণিত হিসাবে , প্রোফাইলিং XDEBUG_CONFIG"প্রোফাইল_এনেবল = 1" নির্দেশকে অন্তর্ভুক্ত করে পরিবেশ পরিবর্তনশীলের মাধ্যমে সক্ষম করা যাবে :

XDEBUG_CONFIG="profiler_enable=1" php ...

এটি সর্বাধিক অ্যাক্সেসযোগ্য পদ্ধতি হিসাবে এটির একটি গ্রহণযোগ্য উত্তর হওয়া উচিত। পিএইচপি বাইনারি মোড়ানো হতে পারে, এটি আপনি স্পর্শ করতে চান না এমন স্থানে #! / X / php দোভাষী হিসাবে সেট করা যেতে পারে। এনভ ভেরিয়েবলটি ব্যবহার করে এটি বেছে বেছে সক্ষম করা যেতে পারে
জন

11

ভিএম তে বিকাশকালে নেটবিনের সাথে এটি কাজ করার জন্য অনুরূপ, তবে ভিন্ন প্রক্রিয়া।

রিমোট সক্ষম করা পতাকা, অটো স্টার্ট পতাকা, আদর্শ পতাকা এবং আপনার দূরবর্তী হোস্টের নাম পাস করতে হবে।

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php

4

ক্লায়েন্ট ডিবাগিং পরিচালনা করতে আমি একটি শেল স্ক্রিপ্ট তৈরি করেছি।

স্ক্রিপ্টের নাম: phpdebug

#!/usr/bin/ksh
php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*

আমি এই স্ক্রিপ্টটি এতে রেখেছি /usr/binএবং এটিকে সম্পাদনের অনুমতি দিয়েছি ।

স্ক্রিপ্টটি পিএইচপিডিবাগে আর্গুমেন্টগুলি গ্রহণ করে এবং পিএইচপি কে xdebug আর্গুমেন্টের সাথে কল করে এবং শেল স্ক্রিপ্টে শেষ হওয়া আর্গুমেন্টগুলি যুক্ত করে। *


হ্যাঁ, যাইহোক আমার ক্ষেত্রে, আমার যা যা প্রয়োজন তা হ'ল আমার দূরবর্তী হোস্টের জন্য INI সেটিংস যুক্ত করা। পিএইচপি সিএমআই কমান্ড থেকে আমার আইডিইতে ডিবাগিংয়ের জন্য যা যা করা দরকার তা ছিল।
স্পেনসার উইলিয়ামস

আসলে, আমার XDEBUG_CONFIGপরিবেশের পরিবর্তনশীল সেট করারও দরকার ছিল না । ঠিক এটি এবং xdebug.remote_hostসেটিংস এটি কাজ করে।
স্প্যান্সার উইলিয়ামস

2

পিএইচপিস্টোরমে In-এ ডাব্লুএএমপি ব্যবহার করে আমি এটির জন্য সি: \ ওয়্যাম্প \ বিন \ অ্যাপাচি \ অ্যাপাচি ২.২.২ \ বিন \ পিএইচপি.এনআই থেকে সিডি এর xdebug বিভাগে অনুলিপি করে আমার কাজ করা xdebug সেটিংসটি কাজ করার জন্য পেয়েছি: \ wamp \ bin \ php \ phpX.YZ \ php.ini। তারপরে আমি আমার স্ক্রিপ্টটি এভাবে চালিয়েছি:

php -d xdebug.idekey=PHPSTORM script.php

এটি লারাভেল কারিগর স্ক্রিপ্টগুলি ডিবাগ করার জন্যও কাজ করেছিল

php -d xdebug.idekey=PHPSTORM artisan db:seed --force

0

জেটব্রাইন থেকে ডকুমেন্টেশন

স্ক্রিপ্টটি পিএইচপি কমান্ড লাইন ব্যবহার করে ডিবাগিং দিয়ে শুরু করতে একটি পরিবেশের ভেরিয়েবল সেট করুন যা XDebug কে আইডিইতে সংযোগ করতে বলবে:

উইন্ডোজ / ম্যাকোস / লিনাক্স

export XDEBUG_CONFIG="idekey=123"  

এখানে আদর্শের একটি র্যান্ডম মান হওয়া উচিত।

নিম্নলিখিত কমান্ড-লাইন বিকল্পগুলির সাথে পিএইচপি চালু করুন:

php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php

আপনি ভ্যাগ্র্যান্টের সাথে 127.0.0.1 এর পরিবর্তে 10.0.2.2 ব্যবহার করতে পারেন (সম্পর্কিত এসও প্রশ্নটি দেখুন)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.