ড্রুপাল কলিং "ইস_ডির" 4000 বারের বেশি?


17

খুব গুরুত্বপূর্ণ সাইটের লোডিংয়ের সময় সমস্যার পরে আমি এক্সএইচপিআরএফ ইনস্টল করেছিলাম এবং আমার কোডটি কোথায় উন্নত করতে পারি তা দেখতে পরিসংখ্যানগুলি সন্ধান করেছি।

আমি আকর্ষণীয় কিছু পেয়েছি যা আমি বুঝতে পারি না। ড্রুপাল প্রায় প্রতিটি অনুরোধের জন্য 4000 সময়ের উপরে "is_dir" কল করে এবং এটি কার্যকর করতে 800 মিমি লাগে। কেন এটি এবং গতি বাড়ানোর কোনও উপায় আছে?

স্ক্রিনশট

দুই থেকে চার সেকেন্ডের লোডিংয়ের সময় 800 মিমি একটি বড় অংশ নেয়।


আপনার কি স্বয়ংক্রিয় রেজিস্ট্রি পুনর্নির্মাণগুলি চালু আছে?
এমপিডোনাদিও

@ এমপিডি আমি স্বয়ংক্রিয় রেজিস্ট্রি পুনর্নির্মাণগুলি অক্ষম করেছি।

এবং এভাবেই দ্রুপাল বিভিন্ন ডিরেক্টরিতে নতুন মডিউল, থিম এবং গ্রন্থাগারকে স্বীকৃতি দেয়!
ভাভিন জোশী

উত্তর:


19

আপনি যখন কোনও মডিউল আনইনস্টল করেন, আপনাকে প্রথমে ড্রুপাল মডিউল অ্যাডমিনে এটি অক্ষম করতে হবে। তারপরে আপনার এটিকে "আনইনস্টল" ট্যাবের মাধ্যমে আনইনস্টল করা উচিত।

থিমগুলির ক্ষেত্রে একই হয়, থিম অ্যাডমিনে প্রথমে অক্ষম করুন।

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

আরও দেখুন: একাধিক মডিউল অনুপস্থিত থাকলে পুনরায় স্ক্যানিং মডিউল ডিরেক্টরিটি এড়িয়ে চলুন

এমপিডির মন্তব্যের উত্তরে আপনাকে এরকম কিছু করতে হবে

SELECT name, filename FROM system WHERE status = 1;

এবং ক্রস রেফারেন্স যা আপনার ফাইল সিস্টেমের মডিউলগুলির সাথে। সমস্ত সক্ষম মডিউল এবং থিমগুলি উপস্থিত থাকা উচিত।

এখানে একটি ফাংশন রয়েছে (সামান্য অভিযোজিত) মার্টিন_ড্রেসডেন এখানে পোস্ট করেছেন:

https://drupal.org/node/1080330#comment-6520842

function MYMODULE_init() {

    $startingtime = microtime(true); 
    $o = '<p>Checking for dead modules ...</p>';
    $result = db_select('system')
      ->fields('system', array('filename'))
      ->condition('status', '1', '=')
      ->execute();
      $n = 1;
      $m = 0;
    foreach ($result as $row) {
      $path = DRUPAL_ROOT.'/'.$row->filename;
      If (!file_exists($path)) { 
          $o .= "#$n $path<br>";
          $m++;
      }
      $n++;
    }
    $timedif =  round(microtime(true) - $startingtime,3);
    $o .= "Total of $n active modules registered in database. $m dead entries found.<br>";
    $o .= 'Query Time: '.$timedif.' seconds';

    drupal_set_message($o);

}

এটি ডিবাগ করতে সহায়তা করতে পারে।


1
{system}সমস্যাটি কোন সারিতে নির্ধারণ করার কোনও উপায় আছে ?
এমপিডোনাদিও

@ এমপিডি উত্তরটি সেখানে সম্ভাব্য সমাধানের সাথে আপডেট হয়েছে।
ডেভিড থমাস

যদি আমি কোনও মডিউল অক্ষম করি তবে এটি আনইনস্টল না করি, এটি আনইনস্টল করার সাথে তুলনায় এই ক্ষেত্রে কোনও অসুবিধা আছে কি?
মারিও আওয়াদ

মডিউলটিতে সিস্টেম সারণীতে একটি সারি থাকবে! আন ইন্সটলেশন মডিউল সম্পর্কিত সমস্ত কিছু মুছে দেয় ডিবিতে এবং ফাইল সিস্টেমে যদি 'আন ইনস্টল' রুটিন সঠিকভাবে লেখা থাকে!
ভাভিন জোশী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.