মন্তব্যগুলি বাল্কে মুছে ফেলা হচ্ছে


11

আমি কীভাবে একবারে সমস্ত মন্তব্য মুছতে পারি? আমি দেখেছি কীভাবে এটি নোড এবং বাল্কডিলেট মডিউল দিয়ে করতে হয়, প্রদত্ত সামগ্রীর ধরণের সমস্ত নোড কীভাবে মুছবেন? তবে মন্তব্যের জন্য একই ধরণের সমাধান খুঁজছি।

আমি এমন একটি সমাধান খুঁজছি যা ডাটাবেসে কোনও শৈলী না ফেলে। ভিউজ বাল্ক অপারেশনগুলি কি সেরা সমাধান?

উত্তর:


7

আফাইক, ভিবিওর কাজটি করতে সক্ষম হওয়া উচিত, তবে আমি মন্তব্য মুছে ফেলার চেষ্টা করি নি।

অন্য উপায়টি হ'ল কিছু কোড চালানো (মডিউলে বা ডিভেল মডিউলের 'এক্সিকিউট পিএইচপি' ব্লক) যা ডিবি থেকে সমস্ত প্রশ্নের একটি তালিকা পায়, মন্তব্য আইডির একটি অ্যারে তৈরি করে এবং সেই অ্যারেটি কমেন্ট_ডিলিট_পল্টি ফাংশনে পাস করে। নোট করুন যে এটি সম্পূর্ণ হতে কিছুক্ষণ সময় নিতে পারে (সার্ভারের কার্য সম্পাদন এবং মন্তব্যের সংখ্যার উপর নির্ভর করে), সুতরাং আপনার নিজের মতো করে কাজ করতে পারে উদাহরণস্বরূপ set_time_limit (http://php.net/manual/en/function) ব্যবহার করে .set-time-limit.php) বা দ্রুপালের ব্যাচ এপিআই।

[আপডেট: এই পদ্ধতির উপর ভিত্তি করে কোডের জন্য ক্রিস কোহেনের উত্তর দেখুন]]


7

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


$cids = db_select('comment', 'c')
  ->fields('c', array('cid'))
  ->execute()
  ->fetchCol();

comment_delete_multiple($cids);

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


1
দিকনির্দেশের জন্য ধন্যবাদ, তবে আপনার বাক্য গঠনটি বন্ধ। সারণীটি হ'ল comment, আপনার একটি উপনামের প্রয়োজন এবং কাঁচা বস্তুর ফলাফলগুলি সরাসরি খাওয়ানো যাবে নাcomment_delte_multiple
brian_d

@ ব্রায়ান_ডি আপনি কীভাবে মন্তব্য_ডেল্ট_মલ્ટুপাল () এর জন্য প্রস্তুত কাঁচামাল ফলাফলের প্রক্রিয়া করবেন?
jackocnr

2

ব্যক্তিগতভাবে, আমি ভিউজ বাল্ক অপারেশন মডিউলটি যাব ।

এই মডিউলটি প্রদর্শিত সারিগুলিতে বাল্ক অপারেশনগুলি সম্পাদন করার অনুমতি দিয়ে দর্শন বাড়িয়েছে। এটি প্রতিটি নোডের সামনে একটি চেকবক্স দেখিয়ে এবং প্রয়োগ করা যেতে পারে এমন ক্রিয়াকলাপ যুক্ত একটি নির্বাচন বাক্স যুক্ত করে এটি করে। ড্রুপাল কোর বা বিধি ক্রিয়াগুলি ব্যবহার করা যেতে পারে।


0

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

টেবিল মন্তব্য ট্রুনসেট করুন

নোড_কমেন্ট_সংখ্যার আপডেট করুন SET মন্তব্য_কাউন্ট = 0


আমি মনে করি ড্রুপাল এপিআই কলটি ব্যবহার করার সুবিধাটি comment_delete_multipleহ'ল এটি আপনার ডিবি সম্ভাব্য ক্লিনার রেখে আপনার জন্য অতিরিক্ত ড্রুপাল হুক কল করতে পারে।
brian_d

আমি কেন বললাম যে আপনার যদি মন্তব্যের সাথে ইন্টারঅ্যাক্ট করার মডিউল থাকে তবে আমি তা করা এড়াতে পরামর্শ দেব। অন্যথায় আপনার যদি স্টক মন্তব্য থাকে তবে আমি এটির সাথে কোনও সমস্যা কখনই লক্ষ্য করি নি। আপনার কাছে এমন হাজার হাজার মন্তব্যে স্প্যামযুক্ত স্পেস রয়েছে এমন সাইট থাকলে এটি করা অবশ্যই অনেক সহজ।
জি.মার্টিন

আপনার পাশাপাশি 'ফিল্ড_ডাটা_কমেন্ট_বডি' টেবিলটি ছাঁটাই করা দরকার, যেহেতু সেখানেই মন্তব্যগুলির সামগ্রী সঞ্চয় করা আছে।
Creynders

0

কিছু ইউআই সরঞ্জাম আপনি নীচের মডিউলগুলি ইনস্টল করতে পারেন

দর্শন - drupal.org/project/views

প্রতিটি ড্রুপাল সাইটের প্রয়োজন, আমি বিশ্বাস করি ... এটি ব্যাকএন্ডে এসকিউএল উত্পন্ন করে এবং কনফিগারযোগ্য সেটিংস, ফিল্টারগুলি, বাছাইকরণ, পৃষ্ঠাকরণ ... ইত্যাদি সহ ফলাফল প্রদর্শন করে etc

ভিবিও - http://drupal.org/project/views_bulk_operation বাল্ক ক্রিয়াকলাপের অনুমতি দিতে (যেমন এই থ্রেডের জন্য মন্তব্যগুলি মুছুন)

প্রশাসনিক দর্শন - http://drupal.org/project/admin_views ভিউ এবং ভিবিওর সুবিধা গ্রহণ করুন, মেনু_াল্টার দ্বারা মূল কনটেট, মন্তব্য, ব্যবহারকারীর প্রশাসক পৃষ্ঠাগুলি প্রতিস্থাপন করুন ...

  1. উপরের মডিউলগুলি সক্ষম করার পরে, অ্যাডমিন পৃষ্ঠাতে মন্তব্য করতে ফিরে যান
  2. সমস্ত নির্বাচন করুন টিক চিহ্ন ( সতর্কতা অবলম্বন করুন , আপনি সমস্ত মন্তব্য মুছতে চান তা নিশ্চিত করুন ...)
  3. "মুছুন" এবং "জমা দিন" নির্বাচন করুন ( সতর্কতা অবলম্বন করুন , পরে আর কোনও কনফার্ম বোতাম নেই ...)

0

ব্যাকআপ এবং মাইগ্রেট মডিউলটি ব্যবহার করে প্রায় 45,000 টি মন্তব্য মুছে ফেলা হয়েছে। 'নিম্নলিখিত টেবিলগুলি থেকে ডেটা বাদ দিন' - এ উন্নত সেট আপে - প্রথমে Ctrl কী টিপুন এবং তারপরে তালিকায় মন্তব্য নির্বাচন করুন - (সাবধানতা অবলম্বন করুন কারণ এখানে অপ্রয়োজনীয় ক্যাশে টেবিলগুলি ইতিমধ্যে নির্বাচিত রয়েছে) - ব্যাকআপ - এই ব্যাকআপ করা ফাইলটি থেকে পুনরুদ্ধার করুন। Hurray থেকে!


0

এই উত্তরটি ইতিমধ্যে তালিকাভুক্ত উত্তরের অনুরূপ তবে আমি প্রায় 27,000 টি মন্তব্যে একটি 'মেমরি ত্রুটির বাইরে' রোধ করতে এটি পরিবর্তন করেছি। মন্তব্যগুলির সংখ্যার উপর নির্ভর করে এটি কার্যকর করতে কিছু সময় লাগবে। কেবলমাত্র মন্তব্যগুলির টেবিলটি ছাঁটাই করা ভাল ধারণা নয়; ড্রপালকে সামগ্রী মুছে ফেলার বিষয়টি পরিচালনা করা ভাল।

আমি একটি পিএইচপি স্ক্রিপ্ট তৈরি করেছি:

$cids = db_select('comment', 'c')
  ->fields('c', array('cid'))
  ->execute()
  ->fetchCol();

foreach($cids as $cid)
{
  comment_delete($cid);
}

... তারপরে দ্রাশের সাথে স্ক্রিপ্টটি চালিয়েছে

drush @my_alias php-script my_script.php

0

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

DELETE c, rcb, dcb
FROM
    comment AS c
JOIN field_revision_comment_body AS rcb ON (c.cid = rcb.entity_id)
JOIN field_data_comment_body AS dcb ON (rcb.entity_id = dcb.entity_id)
WHERE
    c. STATUS = 0

-2

পিএইচপি ফিল্টার সক্ষম করুন, এবং নিম্নলিখিত কোড সহ একটি প্রাথমিক পৃষ্ঠা তৈরি করুন:

<?php
  db_query("TRUNCATE TABLE {comment}");
  db_query("UPDATE {node_comment_statistics} SET comment_count = 0");
?>

1
এই জাতীয় জিনিসের জন্য পিএইচপি ফিল্টার কখনই ব্যবহার করবেন না (এমনকি অন্য কোনও জিনিসের জন্যও পিএইচপি ফিল্টার সাধারণত দ্রুপালের সবচেয়ে খারাপ ধারণার মধ্যে একটি)
আলেজান্দ্রো মোরেনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.