बल्क में टिप्पणियां हटाना


11

मैं एक बार में सभी टिप्पणियां कैसे हटा सकता हूं? मैंने देखा है कि यह नोड्स और बल्कडेलेट मॉड्यूल के साथ कैसे किया जाता है, किसी दिए गए सामग्री प्रकार के सभी नोड्स को कैसे हटाएं? लेकिन टिप्पणियों के लिए एक समान समाधान देख रहा हूं।

मैं एक ऐसे समाधान की तलाश में हूं जो डेटाबेस में किसी भी कलाकृतियों को न छोड़े। क्या दृश्य थोक संचालन सबसे अच्छा समाधान है?

जवाबों:


7

AFAIK, VBO को काम करने में सक्षम होना चाहिए, लेकिन मैंने खुद को टिप्पणियों को हटाने की कोशिश नहीं की है।

एक अन्य तरीका कुछ कोड (एक मॉड्यूल में या डेवेल मॉड्यूल के 'निष्पादित php' ब्लॉक) को चलाने के लिए है, जो db से सभी प्रश्नों की एक सूची प्राप्त करता है, टिप्पणी आईडी की एक सरणी बनाता है और उस सरणी को comment_delete -multiple फ़ंक्शन से गुजरता है । ध्यान दें कि इसे पूरा होने में कुछ समय लग सकता है (सर्वर के प्रदर्शन और टिप्पणियों की संख्या के आधार पर), इसलिए हो सकता है कि आप इसके आसपास अपना काम करें, उदाहरण के लिए set_time_limit (http://php.net/manual/en/function) का उपयोग करके .set-time-limit.php) या Drupal का बैच API।

[अद्यतन: इस दृष्टिकोण के आधार पर उदाहरण के कोड के लिए क्रिस कोहेन का जवाब देखें।]


7

यह एक वैकल्पिक उत्तर नहीं है, marcvangend's पर अधिक विस्तार है, लेकिन मैं उनके जवाब पर टिप्पणी नहीं कर सकता और उदाहरण कोड छोड़ सकता हूं। तो, devel के निष्पादित कोड ब्लॉक का उपयोग करते हुए मैनुअल दृष्टिकोण, थोड़ा सा दिखेगा:


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

comment_delete_multiple($cids);

जैसा कि marvvangend बताते हैं, यह आपके सर्वर पर निष्पादन समय तक सीमित रहने वाला है, इसलिए यदि आपके पास बहुत सारी टिप्पणियां हैं, तो आपको इसे अस्थायी रूप से उठाना होगा। Dbtng सहायता के लिए manarth और instofjamie को धन्यवाद।


1
दिशा के लिए धन्यवाद, लेकिन आपका सिंटैक्स बंद है। तालिका है comment, आपको एक उर्फ ​​की आवश्यकता है और कच्ची वस्तु के परिणाम सीधे में नहीं खिलाए जा सकते हैंcomment_delte_multiple
brian_d

@brian_d आप टिप्पणी_delte_multiple () के लिए तैयार कच्चे ऑब्जेक्ट परिणामों को कैसे संसाधित करेंगे?
जैकोकनर

2

व्यक्तिगत रूप से, मैं व्यू बल्क ऑपरेशन मॉड्यूल के लिए जाऊंगा ।

यह मॉड्यूल प्रदर्शित होने वाली पंक्तियों पर बल्क संचालन की अनुमति देकर दृश्य बढ़ाता है। यह प्रत्येक नोड के सामने एक चेकबॉक्स दिखा कर, और उन चुनिंदा बॉक्स को जोड़ देता है, जिनमें ऑपरेशन किया जा सकता है। Drupal Core या नियम क्रियाओं का उपयोग किया जा सकता है।


0

ईमानदारी से जब मुझे ऐसा करने की ज़रूरत थी तो मैंने इसे डेटाबेस में किया। आप टिप्पणियों को हटाते हैं, टिप्पणी के आँकड़े और Poof को ठीक करते हैं, सभी टिप्पणियाँ समाप्त हो जाती हैं। अगर आप मॉड्यूल को किसी विषम शैली में टिप्पणियों के साथ बातचीत करते हैं, तो मैं इसे करने से बचना चाहता हूं, अन्यथा इसके बारे में मैं क्या सुझाव दूंगा।

ट्रिब्यूट टेबल टिप्पणियाँ

UPDATE नोड_कॉममेंट_स्टैटिस्टिक्स सेट टिप्पणी_काउंट = 0


मुझे लगता comment_delete_multipleहै कि ड्रुपल एपीआई कॉल का उपयोग करने का फायदा यह है कि यह आपके लिए अतिरिक्त ड्रुपल हुक कह सकता है, जिससे आपका डीबी संभावित क्लीनर हो सकता है।
ब्रायन_द

यही कारण है कि मैंने कहा कि मैं ऐसा करने से बचने का सुझाव दूंगा यदि आपके पास टिप्पणियों के साथ बातचीत करने वाले मॉड्यूल हैं। अन्यथा यदि आपके पास स्टॉक टिप्पणियां हैं, तो मैंने इसके साथ कभी कोई समस्या नहीं नोट की है। यह निश्चित रूप से करने के लिए बहुत आसान है अगर आपके पास एक साइट है जिसने हजारों टिप्पणियों के साथ स्पैम किया है।
जी.मार्टिन

आपको तालिका 'फ़ील्ड_डेटा_कॉममेंट_बॉडी' के रूप में अच्छी तरह से ट्रंक करने की आवश्यकता है, क्योंकि टिप्पणी सामग्री संग्रहीत है।
Creynders

0

कुछ यूआई उपकरण आप नीचे मॉड्यूल स्थापित कर सकते हैं

दृश्य - drupal.org/project/ साक्षात्कार

प्रत्येक Drupal साइट की जरूरत है, मेरा मानना ​​है ... यह एसक्यूएल को बैकएंड पर उत्पन्न करता है और कॉन्फ़िगर करने योग्य सेटिंग्स, फिल्टर, छंटाई, पेजिंग ... आदि के साथ परिणाम प्रदर्शित करता है।

VBO - http://drupal.org/project/views_bulk_operations बल्क ऑपरेशंस की अनुमति देने के लिए (यानी इस थ्रेड के लिए टिप्पणियां हटाएं)

व्यवस्थापन दृश्य - http://drupal.org/project/admin_ साक्षात्कार दृश्य और VBO के फ़ायदे उठाएं, मूल संदर्भ, टिप्पणी, उपयोगकर्ता व्यवस्थापक पृष्ठों को menu_alter द्वारा प्रतिस्थापित करें ...

  1. मॉड्यूल से ऊपर सक्षम करने के बाद, व्यवस्थापक पृष्ठ पर वापस जाएं
  2. सभी का चयन करें ( सावधान रहें , सुनिश्चित करें कि आप सभी टिप्पणियों को हटाना चाहेंगे ...)
  3. "हटाएं" और "सबमिट करें" चुनें ( सावधान रहें , बाद में कोई और पुष्टि बटन नहीं ...)

0

बैकअप और माइग्रेट मॉड्यूल का उपयोग करके लगभग 45,000 टिप्पणियों को हटा दिया गया। 'निम्न तालिकाओं से डेटा बाहर करें' में उन्नत सेट अप में - पहले Ctrl कुंजी दबाएं फिर सूची में टिप्पणी का चयन करें - (सावधान रहें क्योंकि यहां अनावश्यक कैश टेबल पहले से ही चयनित हैं) - बैकअप - इस समर्थित अप फ़ाइल से पुनर्स्थापित करें। हुर्रे!


0

यह उत्तर पहले से सूचीबद्ध उत्तर के समान है लेकिन मैंने इसे लगभग 27,000 टिप्पणियों के लिए 'मेमोरी एरर' से बचाने के लिए संशोधित किया है। टिप्पणियों की संख्या के आधार पर निष्पादित करने में थोड़ा समय लगेगा। बस टिप्पणी तालिका को छोटा करना एक अच्छा विचार नहीं हो सकता है; Drupal को सामग्री को हटाने की अनुमति देना सबसे अच्छा है।

मैंने एक PHP स्क्रिप्ट बनाई:

$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

मैं आमतौर पर बल्क में टिप्पणियों या नोड्स को हटाने के लिए VBO का उपयोग करने की सलाह दूंगा लेकिन यदि आप ऐसी स्थिति में हैं जब आपके पास सैकड़ों हजारों टिप्पणियां हैं और आपके पास बहुत अधिक समय नहीं है, तो यहां एक sql क्वेरी है जो सभी अप्रयुक्त टिप्पणियों को हटा देगा उन टिप्पणियों से संबंधित सभी संशोधनों और डेटा के साथ जो मेरे मामले में DB में 1.2Gb जगह ले रहे थे

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 फ़िल्टर सक्षम करें, और निम्न कोड के साथ एक मूल पृष्ठ बनाएँ:

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

1
चीजों के लिए कभी भी PHP फ़िल्टर का उपयोग न करें (यहां तक ​​कि किसी भी अन्य चीज़ के लिए, PHP फ़िल्टर आमतौर पर Drupal में सबसे बुरे विचारों में से एक है)
एलेजांद्रो मोरेनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.