কোনও পিএইচপি স্ক্রিপ্ট প্রোফাইলের সহজ উপায়


289

একটি পিএইচপি স্ক্রিপ্ট প্রোফাইল করার সবচেয়ে সহজ উপায় কি?

আমি এটিতে কিছু স্পর্শ করতে পছন্দ করব যা আমাকে সমস্ত ফাংশন কলগুলির একটি ডাম্প দেখায় এবং কত সময় নেয় সেগুলি দেখায় তবে নির্দিষ্ট ফাংশনগুলির আশেপাশে কিছু রেখে আমি ঠিক আছি।

আমি মাইক্রোটাইম ফাংশন নিয়ে পরীক্ষার চেষ্টা করেছি :

$then = microtime();
myFunc();
$now = microtime();

echo sprintf("Elapsed:  %f", $now-$then);

তবে এটি কখনও কখনও আমাকে নেতিবাচক ফলাফল দেয়। এছাড়াও আমার কোডে এটি ছিটানো অনেক ঝামেলা trouble


7
আরে মার্ক, নেতিবাচক মন্তব্যগুলি সমাধান করার জন্য আপনাকে এই মন্তব্যটি দেখুন: ro.php.net/manual/en/function.microtime.php#99524
মিনা

16
@ মিডিয়া দ্বারা লিঙ্ক করা এই মন্তব্যটির কোনও অর্থ নেই। যদি মনে হয় কমেন্টারের সমস্যাটি সমাধান হয়ে যায় তবে এটি অবশ্যই কাকতালীয় ছিল। শুধু ব্যবহার microtime(): মত কখনও কখনও মূল্যায়নের এক্সপ্রেশন হতে হবে "0.00154800 1342892546" - "0.99905700 1342892545", যা মত মূল্যায়ন হবে: 0.001548 - 0.999057। আপনি ব্যবহার করতে পারেন microtime( TRUE )যে সমস্যা এড়াতে, যেমন সরু আউট @luka দ্বারা।
জেএমএম

উত্তর:


104

PECL APD এক্সটেনশন নিম্নরূপ ব্যবহার করা হয়:

<?php
apd_set_pprof_trace();

//rest of the script
?>

এর পরে, উত্পন্ন ফাইলটি ব্যবহার করে পার্স করুন pprofp

উদাহরণ আউটপুট:

Trace for /home/dan/testapd.php
Total Elapsed Time = 0.00
Total System Time  = 0.00
Total User Time    = 0.00


Real         User        System             secs/    cumm
%Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
--------------------------------------------------------------------------------------
100.0 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0000   0.0009            0 main
56.9 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0005   0.0005            0 apd_set_pprof_trace
28.0 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 preg_replace
14.3 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 str_replace

সতর্কতা: এপিডির সর্বশেষ প্রকাশের তারিখ 2004 রয়েছে, এক্সটেনশনটি আর রক্ষণাবেক্ষণ করা হয় না এবং এতে বিভিন্ন সামঞ্জস্যতার সমস্যা রয়েছে (মন্তব্য দেখুন)।


19
এপিডি এক্সটেনশন পিএইচপি 5.4 এ ভাঙ্গা।
স্কাইনেট

ব্যবহারকারীর ৪ ret70০১৫১ এর প্রতিক্রিয়ায়, আমি ওয়ার্ডপ্রেস ৩.৮.১ এবং পিএইচপি ৫.৩.১০ চলমান কোনও ওয়েবসাইটে এটি কাজ করতে সক্ষম হয়েছি এবং মনে হয় এটি ঠিক কাজ করে work
সুপারনোহো

1
@ সুপর্ণোহো, ব্যবহারকারী 457015 পিএইচপি 5.4 বলেছেন। তিনি বলেননি যে এটি পিএইচপি 5.3 এ ভাঙ্গা হয়েছে।
ম্যাগনাস

@ user1420752 আমি 5.3.27 চালিয়ে যাচ্ছি এবং এটিও সেখানে চলছে না। আমি একটি অপরিবর্তিত ফাংশন ত্রুটি পেয়েছি।
ফ্র্যাক্টালি

2
এপিডি-র সর্বশেষ প্রকাশটি 2004 (!) থেকে হয়েছে এটি পিএইচপি 7 এর সাথে কাজ করে না with সাথে পিএইচপি 5 ইনস্টল করার চেষ্টা করার সময় pecl install apdএটি "config.m4" সম্পর্কে একটি ত্রুটি বার্তা দেয়। দেখে মনে হচ্ছে আপনাকে উত্স থেকে এটি ইনস্টল করতে হবে, যা আমি এখনও চেষ্টা করি নি। গম্ভীরভাবে, পিএইচপি-র জন্য আধুনিক, আপডেট সিএলআই-ভিত্তিক প্রোফাইলিংয়ের সরঞ্জাম নেই যা হোমব্রিউয়ের সাথে ইনস্টল করে, ন্যূনতম সেটআপ প্রয়োজন এবং সহজেই মানব-পঠনযোগ্য আউটপুট দেয়?
পরের দিন

267

আপনি xdebug চান আমি মনে করি। এটিকে সার্ভারে ইনস্টল করুন, এটি চালু করুন, কেচেগ্রাইন্ড (লিনাক্সের জন্য) বা উইনক্যাসিগ্রিন্ডের (উইন্ডোজের জন্য ) মাধ্যমে আউটপুটটি পাম্প করুন এবং এটি আপনাকে কয়েকটি চমত্কার চার্ট দেখাবে যা সঠিক সময়, সংখ্যা এবং মেমরির ব্যবহারের বিশদ দেয় (তবে আপনি এর জন্য অন্য একটি এক্সটেনশন প্রয়োজন)।

এটি গুরুতরভাবে কাঁপছে: ডি


6
আমি এপিডি সমাধানের চেয়ে এটি প্রয়োগ করা অনেক সহজ পেয়েছি। তবে এটি সম্ভবত কারণ কোনও কারণে এপিডি আমার সিস্টেমে সঠিকভাবে সংকলন করেনি। প্রতিশ্রুতি অনুসারে কেচেগ্রিন্ডের চার্টগুলিও দুর্দান্ত ছিল।
wxs

1
@ এভিলপুপেটমাস্টার, আপনাকে পিএইচপি - - সক্ষম-মেমরি-সীমাবদ্ধতা সহ আরও আধুনিক পিএইচপি সংস্করণ ব্যবহার করতে হবে। দেখুন xdebug.org/docs/basic#xdebug_memory_usage
mercutio

52
xdebug + ওয়েবগ্র্যান্ড দ্রুত এবং সহজ প্রোফাইলিংয়ের জন্য দ্রুত আমার পছন্দের অস্ত্র হয়ে ওঠে। কোড.google.com/p/webgrind
xkcd150

6
xdebug + xdebug_start_trace () + xdebug_stop_trace () = win
quano

3
এক্সএএমপিপি দিয়ে উইন্ডোজটিতে কাজ করা খুব সহজ ছিল। Xdebug এর জন্য ইতিমধ্যে নেটবিন কনফিগার করা আছে। আপনাকে কেবলমাত্র পিপিপিআইএনআইএইচডিবিগ সেটিংসকে এক্সডিবেগ.প্রফিলার_আউটপুট_নাম = "ক্যাশেগ্রিনড.আউট।% T-% s" এ পরিবর্তন করতে হবে, অন্যথায় কোনও আউটপুট তৈরি করা হবে না। অ্যাপাচি পুনঃসূচনা প্রয়োজন।
শিক্ষানবিশ_

96

কোনও এক্সটেনশনের প্রয়োজন নেই, কেবল সহজ প্রোফাইলিংয়ের জন্য এই দুটি ফাংশনটি ব্যবহার করুন।

// Call this at each point of interest, passing a descriptive string
function prof_flag($str)
{
    global $prof_timing, $prof_names;
    $prof_timing[] = microtime(true);
    $prof_names[] = $str;
}

// Call this when you're done and want to see the results
function prof_print()
{
    global $prof_timing, $prof_names;
    $size = count($prof_timing);
    for($i=0;$i<$size - 1; $i++)
    {
        echo "<b>{$prof_names[$i]}</b><br>";
        echo sprintf("&nbsp;&nbsp;&nbsp;%f<br>", $prof_timing[$i+1]-$prof_timing[$i]);
    }
    echo "<b>{$prof_names[$size-1]}</b><br>";
}

এখানে প্রতিটি উদাহরণের জন্য প্রোফাইফ্লেগ () কে প্রতিটি চেকপয়েন্টে বর্ণনার সাথে কল করা এবং প্রোফাই_প্রিন্ট () শেষে বলা হচ্ছে:

prof_flag("Start");

   include '../lib/database.php';
   include '../lib/helper_func.php';

prof_flag("Connect to DB");

   connect_to_db();

prof_flag("Perform query");

   // Get all the data

   $select_query = "SELECT * FROM data_table";
   $result = mysql_query($select_query);

prof_flag("Retrieve data");

   $rows = array();
   $found_data=false;
   while($r = mysql_fetch_assoc($result))
   {
       $found_data=true;
       $rows[] = $r;
   }

prof_flag("Close DB");

   mysql_close();   //close database connection

prof_flag("Done");
prof_print();

আউটপুট এর মতো দেখাচ্ছে:

শুরু
   0.004303
ডিবি থেকে কানেক্ট
   0.003518
সঞ্চালন ক্যোয়ারী
   0.000308
পুনরুদ্ধার তথ্য
   0.000009
বন্ধ ডিবি
   0.000049
সম্পন্ন


37

অফলাইনে যাচ্ছেন এসও ডকুমেন্টেশন বিটা থেকে আমার রেফারেন্স পোস্ট করুন।

এক্সডিবুগ দিয়ে প্রোফাইলিং

এক্সডিবাগ নামে পিএইচপি-র একটি বর্ধিতাংশ পিএইচপি অ্যাপ্লিকেশনগুলির পাশাপাশি রাইলটাইম ডিবাগিংয়ে সহায়তা করার জন্য উপলব্ধ । প্রোফাইলার চালানোর সময়, আউটপুট একটি বাইনারি ফর্ম্যাটে "ক্যাশেগ্রিন্ড" নামে একটি ফাইলকে লেখা হয়। এই ফাইলগুলি বিশ্লেষণের জন্য প্রতিটি প্ল্যাটফর্মে অ্যাপ্লিকেশন উপলব্ধ। এই প্রোফাইলিং সম্পাদনের জন্য কোনও অ্যাপ্লিকেশন কোড পরিবর্তন প্রয়োজন।

প্রোফাইলিং সক্ষম করতে, এক্সটেনশনটি ইনস্টল করুন এবং php.ini সেটিংস সামঞ্জস্য করুন। কিছু লিনাক্স বিতরণ স্ট্যান্ডার্ড প্যাকেজগুলির সাথে আসে (যেমন উবুন্টুর php-xdebugপ্যাকেজ)। আমাদের উদাহরণে আমরা একটি অনুরোধ প্যারামিটারের ভিত্তিতে প্রোফাইলটি allyচ্ছিকভাবে চালাব। এটি আমাদের সেটিংস স্থির রাখতে এবং প্রয়োজন হিসাবে কেবল প্রোফাইলার চালু করতে দেয়।

# php.ini settings
# Set to 1 to turn it on for every request
xdebug.profiler_enable = 0
# Let's use a GET/POST parameter to turn on the profiler
xdebug.profiler_enable_trigger = 1
# The GET/POST value we will pass; empty for any value
xdebug.profiler_enable_trigger_value = ""
# Output cachegrind files to /tmp so our system cleans them up later
xdebug.profiler_output_dir = "/tmp"
xdebug.profiler_output_name = "cachegrind.out.%p"

এরপরে আপনি যে অ্যাপ্লিকেশনটির ইউআরএলটি প্রোফাইল করতে চান তার অনুরোধ করতে একটি ওয়েব ক্লায়েন্ট ব্যবহার করুন, যেমন

http://example.com/article/1?XDEBUG_PROFILE=1

পৃষ্ঠাটি প্রক্রিয়া করার সাথে সাথে এটি একই নামের সাথে কোনও ফাইলে লিখবে

/tmp/cachegrind.out.12345

ডিফল্টরূপে ফাইলের নাম্বারটি হ'ল প্রক্রিয়া আইডি যা এটি লিখেছিল। এটি xdebug.profiler_output_nameসেটিংসের সাথে কনফিগারযোগ্য ।

নোট করুন যে এটি কার্যকর করা প্রতিটি পিএইচপি অনুরোধ / প্রক্রিয়া জন্য একটি ফাইল লিখবে। সুতরাং, উদাহরণস্বরূপ, আপনি যদি কোনও ফর্ম পোস্ট বিশ্লেষণ করতে চান তবে এইচটিএমএল ফর্মটি প্রদর্শনের জন্য জিইটি অনুরোধের জন্য একটি প্রোফাইল লেখা হবে। ফর্মটি প্রক্রিয়াকরণ করে এমন দ্বিতীয় অনুরোধ বিশ্লেষণের জন্য XDEBUG_PROFILE পরামিতিটি পরবর্তী পোস্টের অনুরোধের মধ্যে প্রেরণ করা দরকার। সুতরাং প্রোফাইলিং করার সময় কখনও কখনও কার্ল চালানো সহজ হয়ে সরাসরি কোনও ফর্ম পোস্ট করুন।

আউটপুট বিশ্লেষণ

একবার লিখিত প্রোফাইল ক্যাশে কেসিচেগ্রিন্ড বা ওয়েবগ্রাইন্ডের মতো কোনও অ্যাপ্লিকেশন দ্বারা পড়া যেতে পারে । পিএইচপিএসটর্ম, একটি জনপ্রিয় পিএইচপি আইডিই, এই প্রোফাইলিং ডেটা প্রদর্শন করতে পারে ।

KCachegrind

কে কেচেগ্রিন্ড উদাহরণস্বরূপ, তথ্যগুলি প্রদর্শন করবে:

  • কার্য সম্পাদন
  • কল সময়, নিজেই এবং পরবর্তী ফাংশন কল অন্তর্ভুক্ত
  • প্রতিটি ক্রিয়াকলাপের জন্য কল করা সংখ্যা
  • গ্রাফ কল করুন
  • উত্স কোড লিঙ্ক

কি জন্য পর্যবেক্ষণ

স্পষ্টতই পারফরম্যান্স টিউনিং প্রতিটি প্রয়োগের ব্যবহারের ক্ষেত্রে খুব নির্দিষ্ট। সাধারণভাবে এটি সন্ধান করা ভাল:

  • একই ফাংশনে বারবার কলগুলি আপনি দেখতে আশা করবেন না। ফাংশনগুলির জন্য যা ডেটা প্রক্রিয়া করে এবং ক্যোয়ারী ডেটা এগুলি আপনার অ্যাপ্লিকেশনকে ক্যাশে করার জন্য প্রধান সুযোগ হতে পারে।
  • ধীরগতিতে চলমান কার্যাদি। অ্যাপ্লিকেশনটি তার বেশিরভাগ সময় ব্যয় করে কোথায়? পারফরম্যান্স টিউনিংয়ের সেরা অর্থ প্রদান অ্যাপ্লিকেশনটির সেই অংশগুলিকে কেন্দ্র করে যা বেশিরভাগ সময় ব্যয় করে।

দ্রষ্টব্য : এক্সডিবাগ এবং বিশেষত এর প্রোফাইলিং বৈশিষ্ট্যগুলি হ'ল অত্যন্ত সংস্থানীয় এবং পিএইচপি বাস্তবায়নকে ধীর করে দেয়। এটি কোনও প্রোডাকশন সার্ভার পরিবেশে না চালানোর পরামর্শ দেওয়া হয়।


3
প্রোফাইল ক্যাশে পার্স করার জন্য সরঞ্জামগুলির তালিকায় যুক্ত করা হচ্ছে: পিএইচপিস্টোরমের প্রোফাইল ক্যাশে প্রাকদর্শন করার জন্য একটি সরঞ্জাম রয়েছে
পিটারচাউলা

1
@ পিটার আমি ভুলে গিয়েছিলাম পিএইচপিএসটারমে এর বৈশিষ্ট্য রয়েছে। আমি এটি ডকুমেন্টেশনের লিঙ্কের সাথে যুক্ত করেছি। ধন্যবাদ!
ম্যাট এস

সার্ভারে সরাসরি কোনও পাঠ্য (নন-জিইউআই) রিপোর্ট পাওয়ার কোনও উপায়?
আলেকজান্ডার শ্যাচব্লিকিন

1
@ মার্ক আপনি উত্তর হিসাবে চিহ্নিত করতে পারে, দয়া করে। পোস্ট করা সত্ত্বেও বর্তমান উত্তরটি পুরানো ছিল এবং বহু বছর ধরে কাজ করেনি his এই কাজটি, এবং আমি এর চেয়ে ভালতর কোনও পদ্ধতি সম্পর্কে জানি না।
মাউগ বলেছেন মনিকা

24

যদি মাইক্রোটাইমগুলি বিয়োগ করা আপনাকে নেতিবাচক ফলাফল দেয় তবে আর্গুমেন্ট true( microtime(true)) দিয়ে ফাংশনটি ব্যবহার করে দেখুন । এর সাথে true, ফাংশনটি স্ট্রিংয়ের পরিবর্তে একটি ফ্লোট ফেরত দেয় (এটি যদি যুক্তি ছাড়াই ডাকা হয় তবে এটি হয়)।


24

সত্য, আমি যুক্তি দিতে যাচ্ছি যে প্রোফাইলিংয়ের জন্য নিউরেলিক ব্যবহার করা সবচেয়ে ভাল।

এটি এমন একটি পিএইচপি এক্সটেনশান যা রানটাইমকে মোটেও কমিয়ে দেবে বলে মনে হয় না এবং তারা আপনার জন্য নিরীক্ষণ করে, শালীন ড্রিলকে অনুমতি দেয়। ব্যয়বহুল সংস্করণে তারা ভারী ড্রিল হ্রাস করার অনুমতি দেয় (তবে আমরা তাদের মূল্যের মডেলটি বহন করতে পারি না)।

তবুও, নিখরচায় / মানক পরিকল্পনার পরেও এটি সুস্পষ্ট এবং সহজ যেখানে বেশিরভাগ কম ঝুলন্ত ফল রয়েছে। আমি এটিও পছন্দ করি যে এটি আপনাকে ডিবি ইন্টারঅ্যাকশন সম্পর্কেও ধারণা দিতে পারে।

প্রোফাইলিং করার সময় একটি ইন্টারফেসের স্ক্রিনশট


16
নতুন অবশেষ প্রতিশ্রুতিবদ্ধ, নিশ্চিত মনে হচ্ছে। তবে, তাদের গোপনীয়তার নীতিটির অংশ "আপনার অ্যাপ্লিকেশন ডেটার প্রকাশ" তাত্ক্ষণিকভাবে আমাকে তিরস্কার করেছিল। ইমো, তৃতীয় পক্ষের সাথে মালিকানা উত্স কোডের টুকরো ভাগ করে নেওয়া কিছুটা বেশি little
চেঞ্জিজ

8
এখানে তাদের প্রতিরক্ষায় ঝাঁপিয়ে পড়ছে না, তবে দেখে মনে হচ্ছে "অ্যাপ্লিকেশন ডেটা" কেবল পারফরম্যান্সের তথ্য এবং সিস্টেম কনফিগারেশন তথ্য, আপনার অ্যাপ্লিকেশন উত্স কোড নয়।
ডেভিড শিল্ডস

আমার নতুন প্রতিলিপিটি আমার "ওয়েব ট্রান্সজেকশন" সময়কে 99% হিসাবে দেখায় এবং "অ্যাপ্লিকেশনট্রেস"
কার্তিক টি

1
এখানে সাইন আপ করার চেষ্টা করুন: newrelic.com/rackspace <আপনাকে বিনামূল্যে "মান" দেওয়া উচিত
জিরোস্টারিস্ক

15

দরিদ্র ব্যক্তির প্রোফাইলিং, কোনও এক্সটেনশানের প্রয়োজন নেই। নেস্টেড প্রোফাইল এবং মোট শতাংশ শতাংশ সমর্থন করে:

function p_open($flag) {
    global $p_times;
    if (null === $p_times)
        $p_times = [];
    if (! array_key_exists($flag, $p_times))
        $p_times[$flag] = [ 'total' => 0, 'open' => 0 ];
    $p_times[$flag]['open'] = microtime(true);
}

function p_close($flag)
{
    global $p_times;
    if (isset($p_times[$flag]['open'])) {
        $p_times[$flag]['total'] += (microtime(true) - $p_times[$flag]['open']);
        unset($p_times[$flag]['open']);
    }
}

function p_dump()
{
    global $p_times;
    $dump = [];
    $sum  = 0;
    foreach ($p_times as $flag => $info) {
        $dump[$flag]['elapsed'] = $info['total'];
        $sum += $info['total'];
    }
    foreach ($dump as $flag => $info) {
        $dump[$flag]['percent'] = $dump[$flag]['elapsed']/$sum;
    }
    return $dump;
}

উদাহরণ:

<?php

p_open('foo');
sleep(1);
p_open('bar');
sleep(2);
p_open('baz');
sleep(3);
p_close('baz');
sleep(2);
p_close('bar');
sleep(1);
p_close('foo');

var_dump(p_dump());

উৎপাদনের:

array:3 [
  "foo" => array:2 [
    "elapsed" => 9.000766992569
    "percent" => 0.4736904954747
  ]
  "bar" => array:2 [
    "elapsed" => 7.0004580020905
    "percent" => 0.36841864946596
  ]
  "baz" => array:2 [
    "elapsed" => 3.0001420974731
    "percent" => 0.15789085505934
  ]
]

13

পিইসিএল এক্সএইচপিআরএফ খুব আগ্রহ দেখায়। এটা আছে যোগ্য এইচটিএমএল ইন্টারফেস রিপোর্ট এবং বেশ সহজবোধ্য দেখার জন্য ডকুমেন্টেশন । যদিও আমি এখনও এটি পরীক্ষা আছে।


দেখে মনে হচ্ছে এটি খুব বেশি ভালবাসা পাচ্ছে না। ২০০৯ সালে সর্বশেষ আপডেট, 5.3, 5.4 এবং এর বাইরে কোনও পিয়ার প্যাকেজ নেই ...
dland

1
ফেসবুক পিএইচপি 5.5 github.com/facebook/xhprof
বোরকেনকোড

এই কাঁটাচামচটিও পরীক্ষা করে দেখুন যা কিছু অতিরিক্ত সামঞ্জস্যের প্রস্তাব দেয়: github.com/preinheimer/xhprof
Fedir RYKHTIK

xhprof.io XHProf ব্যবহার করে সংগৃহীত ডেটার জন্য জিইউআই সরবরাহ করে, পাশাপাশি historicalতিহাসিক বিশ্লেষণের উদ্দেশ্যে ডেটাবেজে ডেটা সংরক্ষণ করার ক্ষমতা। আমি পরের বাস্তবায়নের লেখক।
গজুস

10

আমি প্রোফাইলিংয়ের জন্য phpDebug ব্যবহার করতে চাই। http://phpdebug.sourceforge.net/www/index.html

এটি যে কোনও এসকিউএল ব্যবহৃত সমস্ত সময় এবং মেমরির ব্যবহারের পাশাপাশি সমস্ত অন্তর্ভুক্ত ফাইলকে আউটপুট করে। অবশ্যই, এটি বিমূর্ত কোডে সেরা কাজ করে।

ফাংশন এবং বর্গ জন্য প্রোফাইলিং আমি শুধু ব্যবহার করব microtime()+ + get_memory_usage()+ + get_peak_memory_usage()


7

আমি অবজ্ঞাপূর্ণভাবে ব্ল্যাকফায়ার দেব করে দেখতে চাই।

এই ভার্চুয়ালবক্সটি আমি পুপেট ব্যবহার করে একসাথে রেখেছি , বিভিন্ন পিএইচপি ফ্রেমওয়ার্ক যা ব্ল্যাকফায়ারের সাথে কম্বস পরীক্ষা করে তা পরীক্ষা করার জন্য দয়া করে বিনা দ্বিধায় এবং / অথবা প্রয়োজনে বিতরণ করুন :)

https://github.com/webit4me/PHPFrameworks


6

বেঞ্চমার্কিংয়ের জন্য, যেমন আপনার উদাহরণের মতো, আমি নাশপাতি বেনমার্ক প্যাকেজটি ব্যবহার করি । আপনি পরিমাপের জন্য চিহ্নিতকারী সেট করেছেন। ক্লাসটি কয়েকটি উপস্থাপনা সহায়কও সরবরাহ করে, বা আপনি যেমন উপযুক্ত দেখেন তেমন ডেটা প্রক্রিয়া করতে পারেন।

আমি আসলে এটিকে একটি __ড্রাস্ট্রাক্ট পদ্ধতিতে অন্য একটি ক্লাসে জড়িয়ে রেখেছি। যখন কোনও স্ক্রিপ্ট প্রস্থান করে, আউটপুটটি লগ 4 ফাইপ-এর মাধ্যমে সিসলগে লগ করা হয়, তাই আমার কাছে কাজ করার জন্য প্রচুর পারফরম্যান্স ডেটা থাকে।


3

এক্সডিব্যাগ স্থিতিশীল নয় এবং এটি সর্বদা পিএইচপি সংস্করণে উপলভ্য নয়। উদাহরণস্বরূপ কিছু সার্ভারগুলিতে আমি এখনও পিএইচপি -5.1.6 চালিত করি - এটিই রেডহ্যাট আরএইচএল 5 (এবং বিটিডব্লিউ এখনও সমস্ত গুরুত্বপূর্ণ ইস্যুগুলির জন্য আপডেটগুলি গ্রহণ করে) নিয়ে আসে এবং সাম্প্রতিক এক্সডিবগ এমনকি এই পিএইচপি সহ সংকলন করে না। সুতরাং আমি ডিবিজি ডিবাগারে স্যুইচ করে শেষ করেছি এর পিএইচপি বেঞ্চমার্কিং ফাংশন, পদ্ধতি, মডিউল এবং এমনকি লাইনগুলির জন্য সময় সরবরাহ করে।


2

আপনার সকলকে অবশ্যই এই নতুন পিএইচপি প্রোফাইলারটি পরীক্ষা করা উচিত।

https://github.com/NoiseByNorthwest/php-spx

এটি পিএইচপি প্রোফাইলাররা কীভাবে ফলাফল সংগ্রহ এবং উপস্থাপন করে তার উপায়টিকে নতুনভাবে সংজ্ঞায়িত করে। কেবলমাত্র নির্দিষ্ট ফাংশন কল এবং এটি সম্পাদনে ব্যয় করা মোট সময় ব্যয় করার পরিবর্তে - পিএইচপি-এসপিএক্স অনুরোধ কার্যকর করার পুরো টাইমলাইনটিকে নিখুঁতভাবে পাঠযোগ্য উপস্থাপন করে। নীচে এটি সরবরাহ করে জিইউআইয়ের স্ক্রিন।

এখানে চিত্র বর্ণনা লিখুন

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