13000 নোড মুছুন


9

একটি ড্রুপাল 7 সাইটে মুছতে আমার কাছে প্রায় 13000 নোড রয়েছে। আমি একবারে 500 নোড মুছে ফেলার জন্য ভিউজ বাল্ক অপারেশন মডিউলটি চেষ্টা করেছি , তবে এটির ফলস্বরূপ। আমি সময়ে কেবল 50 টি নোড মুছতে পারি।

আমি কীভাবে সময়ে 50 টিরও বেশি নোড মুছতে পারি?


সেখানে "বাল্ক মুছুন" মডিউল থাকত, কিন্তু ভিবিও আনয়ের পক্ষে অচল হয়ে পড়ে। তবে ভিবিও ব্যাচ প্রক্রিয়াজাতকরণ সমর্থন করে বলে মনে হচ্ছে। আপনি এটি ব্যবহার করার চেষ্টা করেছেন?
Mołot

1
VBO, নীচের উত্তরগুলিতে ইঙ্গিত হিসাবে, সম্ভবত যাওয়ার উপায়। আমি এই ক্ষেত্রেটির চেয়ে বেশি পরিমাণে নোড মুছার প্রয়োজনে যা করেছি তা হ্যাক মডিউলটি আমার প্রয়োজন নেই এমন প্রচুর হুকের অনুরোধ উপেক্ষা করতে অনুরোধ জানায়। (আমার নিকৃষ্টতম অপরাধী আপাচে সোলার ছিল)। এটি কাজের লক্ষণীয়ভাবে গতি বাড়িয়ে তুলতে পারে, তবে অবশ্যই খুব যত্ন সহকারে করা উচিত।
লেথারিয়ন

উত্তর:


16

বাল্ক-মোছা নোডের জন্য ভিবিও হ'ল ডি স্ট্যাক্টোর স্ট্যান্ডার্ড, এটি করার আরও ভাল উপায় আর নেই।

ভিবিও ব্যাচগুলিতে প্রক্রিয়া করার সাথে সাথে এটি একবারে কেবলমাত্র 1 (বা হতে পারে একটি দম্পতি) নোড করে। সুতরাং যদি আপনি সময়সীমা ত্রুটিগুলি গ্রহণ করেন তবে সেগুলি পুরো ব্যাচের ক্রিয়াকলাপের সাথে নয়, একটি একক নোড মোছার সাথে সম্পর্কিত ।

এরকম কোনও কিছুর স্ট্যান্ডার্ড রেজোলিউশন হ'ল ক্ষতিপূরণ দেওয়ার জন্য পিএইচপি সর্বোচ্চ প্রয়োগের সময় বাড়ানো increase


2
কেবলমাত্র উত্তরটি সম্পূর্ণ করতে: আপনি অপারেশনটির জন্য কতটি সত্ত্বা বেছে নেওয়া উচিত তা চয়ন করতে পারেন। 100 টি ব্যবহার করা আমার অভিজ্ঞতা থেকে 1 মিনিটের মধ্যে জরিমানা করবে।
আইয়েশক

7

ডেভেল ইনস্টল করুন। তারপরে ডি 7-তে অ্যাডমিন / কনফিগার / ডেভেলপমেন্ট / জেনারেট / কনটেন্টে যান এবং সমস্ত সামগ্রীর প্রকার নির্বাচন করুন। "সমস্ত সামগ্রী মুছুন" পরীক্ষা করুন Check "আপনি কয়টি নোড তৈরি করতে চান?" এ 0 লিখুন

জেনারেট ক্লিক করুন।

এটি সমস্ত নোড মুছে ফেলবে।


1
@ মোউত '' সমস্ত সামগ্রী মুছুন '' পরীক্ষা করুন ... '' তে 0 লিখুন "আপনি কয়টি নোড তৈরি করতে চান?" " ...;)
ক্লাইভ

@ ক্লাইভ ওকে, আমার ভুল, দুঃখিত।
মোওত

1
বিশেষত, এটি ডেভেল জেনারেট মডিউল যা এটি করে; এটি দেভেলের সাথে চালিত হয় তবে আপনি কেবল দেভেলকে সক্ষম করলে আপনি এই কার্যকারিতাটি পাবেন না। আপনি সবকিছু মুছতে না চাইলে আপনি কোনও নির্দিষ্ট সামগ্রীর ধরণের সমস্ত নোডকে সহজেই মুছতে পারেন। যদি আপনি এখনও পিএইচপি সময়সীমা পেয়ে থাকেন এবং সিআইএলিকে ভয় পান না, আপনি ড্রভ generate-content( genc) কমান্ডটিও ব্যবহার করতে পারেন যা ডেভেল জেনারেটের সাথে আসে; drush help gencব্যবহারের তথ্যের জন্য।
গ্যারেট অ্যালব্রাইট

3

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

  1. একটি পৃষ্ঠা সহ একটি নতুন ভিউ তৈরি করুন। আপনি যে ধরণের নোড মুছতে চান তা প্রদর্শন করতে সঠিকভাবে ফিল্টারগুলি সেট করুন।
  2. একটি নতুন ক্ষেত্র যুক্ত করুন: "বাল্ক অপারেশন: সামগ্রী"
  3. 'নির্বাচিত বাল্ক অপারেশন' এর অধীনে "আইটেম মুছুন" এর পাশের বক্সটি চেক করুন।
  4. ভিউ সংরক্ষণ করুন।
  5. ধরে নিচ্ছেন যে আপনি কীভাবে ড্রশ ব্যবহার করবেন জানেন, এই কমান্ডটি চালান: (বড় ডেটাসেটের জন্য নিরবচ্ছিন্নভাবে চালানোর জন্য একটি লিনাক্স 'স্ক্রিন' ব্যবহার করুন)

drush vbo-চালানো my_view কর্ম :: views_bulk_operations_delete_item

যেখানে, আমার_দর্শনটি আপনার দর্শনের মেশিনের নাম

সমস্ত উপলভ্য দর্শন এবং তাদের বাল্ক ক্রিয়াকলাপগুলি প্রদর্শন করতে আপনি ড্রাশ ভিবিও-তালিকাও ব্যবহার করতে পারেন ।

ভিবিও-র এখন শেলটি চালানো উচিত, আপনাকে যাবতীয় মতামত দেওয়া উচিত।


2

একটি মুছে ফেলা সমস্ত মডিউল আছে। এটি সাইট থেকে সমস্ত নোড এবং / অথবা ব্যবহারকারীদের মুছে ফেলবে।

এটিতে ড্রশ সমর্থনও রয়েছে:

উদাহরণ:

drush delete-all article             Delect all article nodes.  
drush delete-all all                 Delete nodes of all types.  
drush delete-all --reset             Delete nodes of all types, and reset node, revision and comment counters.  
drush delete-all users               Delete users.

7
আমি দৃ strongly়ভাবে এই মডিউলটি ব্যবহার না করার পরামর্শ দিচ্ছি - এটি স্ক্রিপ্টে 30 সেকেন্ডের একটি সময়সীমা নির্ধারণ করে এবং প্রতিটি নোডকে পৃথকভাবে কল করে , node_delete()এটি কল করে (এটি ব্যবহার করতেও বিরক্ত করে না node_delete_multiple())। আরও উদ্বেগজনকভাবে, এর একটি বিকল্প রয়েছে যা ফিল্ড এপিআই ব্যবহার না করে এবং হুক ব্যবহার না করে সরাসরি ডাটাবেস টেবিলগুলি থেকে ডেটা মুছে দেয়। কোনও ব্যাচের কাজ মোটেই নেই, স্ক্রিপ্টটি মারা না যাওয়া অবধি এটি চলে। খুব বিপজ্জনক মডিউল আইএমএইচও।
ক্লাইভ

2
আপনি কী করছেন তা যদি আপনি জানেন এবং ব্যাকআপ নেন তবে এখনও দরকারী হতে পারে। সমস্ত হুক এবং এপিসের অনুরোধের সময় হাজার হাজার নোড মোছা বেদনাদায়কভাবে ধীর হতে পারে। :(
চিঠি

@ লেথারিয়ন কোনও ব্যথা নেই, লাভ নেই;) আপনি অবশ্যই বলছেন, আমি যদিও এই বিষয়ে অস্বীকৃতি জানাতে চাই তবে এই মডিউলটি ভুল হাতে যদি জিনিসগুলিকে অগোছালো করে তুলতে পারে!
ক্লাইভ

@ ক্লাইভ ড্রশ সাপোর্টের সাথে যদি আমি drush delete-all articleনিবন্ধগুলি মুছতে চাই তবে আমি এই সমাধানটিতে যাব।
অজিতস

@ দেবেলকার কয়েক শতাধিক নোডের জন্য এটি ঠিকঠাক হতে পারে তবে ড্রাশ এক্সটেনশনটি সাইট সংস্করণ হিসাবে ঠিক একই ফাংশন ব্যবহার করে তাই দুর্ভাগ্যক্রমে সময়সীমার পক্ষে এখনও ঠিক একই রকম সংবেদনশীল
ক্লাইভ

0

ভিউজ বাল্ক অপারেশনগুলি ব্যবহার করুন - এটি একটি ভাল ধারণা ছিল। তবে সরাসরি অপারেশন কল করার পরিবর্তে ব্যাচ এপিআই ব্যবহার করুন। এখানে আপনি এটি সম্পর্কে সংক্ষিপ্ত নিবন্ধ পড়তে পারেন । সেই অংশে নথিপত্রের অভাব একটি পরিচিত সমস্যা ছিল


0

আপনার ক্ষেত্রে যেমন বৃহত সংখ্যক নোডগুলি মুছে ফেলার জন্য (যেমন বাল্ক), আপনি এটির জন্য বাল্ক মোছার মডিউলও ব্যবহার করতে পারেন ।

নোড_ডিলেট_ মাল্টিপল () -তে একক কল সহ কয়েক হাজার নোড মুছে ফেলা হলে টাইমআউট বা মেমরির সমস্যাগুলি এড়াতে নোডগুলি মুছতে ব্যাচ এপিআই ব্যবহার করবে।

এগুলি ছাড়াও, আপনি কোনও সামগ্রীর ধরণের সমস্ত নোড মোছার জন্য সমস্ত মডিউল মুছতে চেষ্টা করতে পারেন ।

আশাকরি এটা সাহায্য করবে.


0

ব্যাচ এপিআই ব্যবহার করে আপনি এটির জন্য ব্যাচ প্রক্রিয়াও তৈরি করতে পারেন এবং সেই ব্যাচ প্রক্রিয়াটি কেবল করুন

foreach($nodes as $node){ node_delete($node[nid]);}

এটাই. আপনি এখানে সম্পন্ন করা হয়েছে। আপনি যদি এটির জন্য কোনও ড্রশ কমান্ড তৈরি করতে চান তবে আপনি এটি তৈরি করতেও পারেন। সহায়তার জন্য দয়া করে তাকান এই


0

আপনার যদি কোড দ্বারা এটি করার কারণ থাকে:

$query = new EntityFieldQuery();

$query->entityCondition('entity_type', 'node')
  ->propertyOrderBy('nid', 'DESC')
  ->range(1000, 1000);

$result = $query->execute();
node_delete_multiple(array_keys($result['node']));

মুছতে নোডগুলি নির্বাচন করার জন্য আপনার কাছে আরও অনেক উপলভ্য পদ্ধতি রয়েছে


0

আপনি ববিকের পরামর্শ নিতে পারেন এবং খাওয়াতে পারেন যে 'ড্রশ পিএইচপি-ইভাল' এর যুক্তি হিসাবে আপনি যদি সত্যিই চিম্টিতে থাকেন তবে আমি আশা করব যে পারফরম্যান্সটি কিছুটা দ্রুত হওয়ার সাথে সাথে ভিবিওর মতো হবে। যদি পারফরম্যান্সটি সত্যিই ধীর হয় তবে আপনি '_নোড_ডিলিট' (এবং 'হুকটি ব্যবহার করছেন এমন কিছু মডিউলকে অক্ষম করতে পারবেন কিনা তা নির্ধারণ করে কী মডিউলগুলি হুক_নোড_ডিলিট কল করছে তা একবার দেখে নিতে পারেন।

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