একটি ড্রুপাল 7 সাইটে মুছতে আমার কাছে প্রায় 13000 নোড রয়েছে। আমি একবারে 500 নোড মুছে ফেলার জন্য ভিউজ বাল্ক অপারেশন মডিউলটি চেষ্টা করেছি , তবে এটির ফলস্বরূপ। আমি সময়ে কেবল 50 টি নোড মুছতে পারি।
আমি কীভাবে সময়ে 50 টিরও বেশি নোড মুছতে পারি?
একটি ড্রুপাল 7 সাইটে মুছতে আমার কাছে প্রায় 13000 নোড রয়েছে। আমি একবারে 500 নোড মুছে ফেলার জন্য ভিউজ বাল্ক অপারেশন মডিউলটি চেষ্টা করেছি , তবে এটির ফলস্বরূপ। আমি সময়ে কেবল 50 টি নোড মুছতে পারি।
আমি কীভাবে সময়ে 50 টিরও বেশি নোড মুছতে পারি?
উত্তর:
বাল্ক-মোছা নোডের জন্য ভিবিও হ'ল ডি স্ট্যাক্টোর স্ট্যান্ডার্ড, এটি করার আরও ভাল উপায় আর নেই।
ভিবিও ব্যাচগুলিতে প্রক্রিয়া করার সাথে সাথে এটি একবারে কেবলমাত্র 1 (বা হতে পারে একটি দম্পতি) নোড করে। সুতরাং যদি আপনি সময়সীমা ত্রুটিগুলি গ্রহণ করেন তবে সেগুলি পুরো ব্যাচের ক্রিয়াকলাপের সাথে নয়, একটি একক নোড মোছার সাথে সম্পর্কিত ।
এরকম কোনও কিছুর স্ট্যান্ডার্ড রেজোলিউশন হ'ল ক্ষতিপূরণ দেওয়ার জন্য পিএইচপি সর্বোচ্চ প্রয়োগের সময় বাড়ানো increase
ডেভেল ইনস্টল করুন। তারপরে ডি 7-তে অ্যাডমিন / কনফিগার / ডেভেলপমেন্ট / জেনারেট / কনটেন্টে যান এবং সমস্ত সামগ্রীর প্রকার নির্বাচন করুন। "সমস্ত সামগ্রী মুছুন" পরীক্ষা করুন Check "আপনি কয়টি নোড তৈরি করতে চান?" এ 0 লিখুন
জেনারেট ক্লিক করুন।
এটি সমস্ত নোড মুছে ফেলবে।
generate-content
( genc
) কমান্ডটিও ব্যবহার করতে পারেন যা ডেভেল জেনারেটের সাথে আসে; drush help genc
ব্যবহারের তথ্যের জন্য।
একটি ভিবিও ব্যবহার করুন এবং এটি ড্রাশ থেকে চালিত করুন। স্কেল পরীক্ষার পরে আমি 1.5 মিলিয়ন নোড মুছতে নিম্নলিখিত পদ্ধতিটি ব্যবহার করেছি।
drush vbo-চালানো my_view কর্ম :: views_bulk_operations_delete_item
যেখানে, আমার_দর্শনটি আপনার দর্শনের মেশিনের নাম
সমস্ত উপলভ্য দর্শন এবং তাদের বাল্ক ক্রিয়াকলাপগুলি প্রদর্শন করতে আপনি ড্রাশ ভিবিও-তালিকাও ব্যবহার করতে পারেন ।
ভিবিও-র এখন শেলটি চালানো উচিত, আপনাকে যাবতীয় মতামত দেওয়া উচিত।
একটি মুছে ফেলা সমস্ত মডিউল আছে। এটি সাইট থেকে সমস্ত নোড এবং / অথবা ব্যবহারকারীদের মুছে ফেলবে।
এটিতে ড্রশ সমর্থনও রয়েছে:
উদাহরণ:
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.
node_delete()
এটি কল করে (এটি ব্যবহার করতেও বিরক্ত করে না node_delete_multiple()
)। আরও উদ্বেগজনকভাবে, এর একটি বিকল্প রয়েছে যা ফিল্ড এপিআই ব্যবহার না করে এবং হুক ব্যবহার না করে সরাসরি ডাটাবেস টেবিলগুলি থেকে ডেটা মুছে দেয়। কোনও ব্যাচের কাজ মোটেই নেই, স্ক্রিপ্টটি মারা না যাওয়া অবধি এটি চলে। খুব বিপজ্জনক মডিউল আইএমএইচও।
drush delete-all article
নিবন্ধগুলি মুছতে চাই তবে আমি এই সমাধানটিতে যাব।
ভিউজ বাল্ক অপারেশনগুলি ব্যবহার করুন - এটি একটি ভাল ধারণা ছিল। তবে সরাসরি অপারেশন কল করার পরিবর্তে ব্যাচ এপিআই ব্যবহার করুন। এখানে আপনি এটি সম্পর্কে সংক্ষিপ্ত নিবন্ধ পড়তে পারেন । সেই অংশে নথিপত্রের অভাব একটি পরিচিত সমস্যা ছিল ।
আপনার ক্ষেত্রে যেমন বৃহত সংখ্যক নোডগুলি মুছে ফেলার জন্য (যেমন বাল্ক), আপনি এটির জন্য বাল্ক মোছার মডিউলও ব্যবহার করতে পারেন ।
নোড_ডিলেট_ মাল্টিপল () -তে একক কল সহ কয়েক হাজার নোড মুছে ফেলা হলে টাইমআউট বা মেমরির সমস্যাগুলি এড়াতে নোডগুলি মুছতে ব্যাচ এপিআই ব্যবহার করবে।
এগুলি ছাড়াও, আপনি কোনও সামগ্রীর ধরণের সমস্ত নোড মোছার জন্য সমস্ত মডিউল মুছতে চেষ্টা করতে পারেন ।
আশাকরি এটা সাহায্য করবে.
ব্যাচ এপিআই ব্যবহার করে আপনি এটির জন্য ব্যাচ প্রক্রিয়াও তৈরি করতে পারেন এবং সেই ব্যাচ প্রক্রিয়াটি কেবল করুন
foreach($nodes as $node){ node_delete($node[nid]);}
এটাই. আপনি এখানে সম্পন্ন করা হয়েছে। আপনি যদি এটির জন্য কোনও ড্রশ কমান্ড তৈরি করতে চান তবে আপনি এটি তৈরি করতেও পারেন। সহায়তার জন্য দয়া করে তাকান এই ।
আপনার যদি কোড দ্বারা এটি করার কারণ থাকে:
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->propertyOrderBy('nid', 'DESC')
->range(1000, 1000);
$result = $query->execute();
node_delete_multiple(array_keys($result['node']));
মুছতে নোডগুলি নির্বাচন করার জন্য আপনার কাছে আরও অনেক উপলভ্য পদ্ধতি রয়েছে ।
আপনি ববিকের পরামর্শ নিতে পারেন এবং খাওয়াতে পারেন যে 'ড্রশ পিএইচপি-ইভাল' এর যুক্তি হিসাবে আপনি যদি সত্যিই চিম্টিতে থাকেন তবে আমি আশা করব যে পারফরম্যান্সটি কিছুটা দ্রুত হওয়ার সাথে সাথে ভিবিওর মতো হবে। যদি পারফরম্যান্সটি সত্যিই ধীর হয় তবে আপনি '_নোড_ডিলিট' (এবং 'হুকটি ব্যবহার করছেন এমন কিছু মডিউলকে অক্ষম করতে পারবেন কিনা তা নির্ধারণ করে কী মডিউলগুলি হুক_নোড_ডিলিট কল করছে তা একবার দেখে নিতে পারেন।