2012-06-27 6 views
9

मैं अगर मैं इसे cronjob, इस MySQLTYPO3 sys_log को अच्छी और साफ रखने का सबसे अच्छा तरीका?

DELETE FROM sys_log 
WHERE sys_log.tstamp < UNIX_TIMESTAMP(ADDDATE(NOW(), INTERVAL -2 MONTH)) 
ORDER BY sys_log.tstamp ASC 
LIMIT 10000 

sys_log छोटे रखने के लिए यह अच्छा है है?

+1

क्रोनबॉज वास्तव में एक क्रिया है? – HerrSerker

+0

नहीं, यह एक संज्ञा है। यह cronjob। एक cronjob। हालांकि मैं व्यक्तिगत रूप से यहां रचनात्मक शब्द-निर्माण को ध्यान में रखता हूं। यदि आपको बुरा लगता है, तो संपादित करने की परवाह है? – wirap

उत्तर

8

हाँ और नहीं

यह नहीं है, तो आप अपने रिकॉर्ड इतिहास के बारे में परवाह। आप sys_history तालिका का उपयोग कर रिकॉर्ड्स (सामग्री, पेज इत्यादि) में परिवर्तनों को वापस कर सकते हैं। Sys_history तालिकाओं और sys_log तालिकाओं से संबंधित हैं। जब आप sys_log को छोटा करते हैं, तो आप सिस्टम में किसी भी बदलाव को रोलबैक करने की क्षमता भी खो देते हैं। आपके क्लाइंट इसे पसंद नहीं कर सकते हैं।

यह आईएस है यदि आप केवल sys_log आकार पर ध्यान देते हैं। क्रॉन के माध्यम से टेबल को छोटा करना ठीक है।

TYPO3 4.6 में और ऊपर आप टेबल कचरा संग्रहण शेड्यूलर कार्य als pgampe का उपयोग कर सकते हैं। 4.5 से नीचे TYPO3 संस्करणों के लिए आप tablecleaner एक्सटेंशन का उपयोग कर सकते हैं। यदि आप [N] दिनों से पुराने sys_log से सभी रिकॉर्ड्स हटाते हैं, तो आप [N] दिनों के लिए अपना रिकॉर्ड इतिहास भी बनाए रखेंगे। यह मेरे लिए सबसे अच्छा समाधान प्रतीत होता है।

और क्या पहली जगह ;-)

+0

एक त्वरित टिप्पणी - आईआईआरसी एक शेड्यूलर नौकरी है, इसलिए आप घर को अपने TYPO3 स्थापना के अंदर "अंदर" रख सकते हैं, और अलग-अलग बाहरी क्ली नौकरियां नहीं चल रही हैं –

6

रखने के बारे में इस के लिए एक अनुसूचक काम है।

इसे Table garbage collection (scheduler) कहा जाता है।

TYPO3 4.7 में, यह केवल sys_log तालिका को साफ़ कर सकता है। TYPO3 6.0 से शुरू, यह sys_history तालिका को भी साफ़ कर सकता है। आप दिनों की संख्या और कौन सी तालिकाओं को साफ करने के लिए कॉन्फ़िगर कर सकते हैं।

एक्सटेंशन साफ़ करने के लिए और तालिकाओं को पंजीकृत कर सकते हैं।

+0

इसे क्या कहा जाता है? – HerrSerker

+0

मैंने नाम में नाम और कुछ और शब्द जोड़े। टाइपो 3 4.7.8 में – pgampe

+0

शेड्यूलर एक्सटेंशन में विभिन्न बग की वजह से यह कार्य बैकएंड के भीतर से निर्धारित नहीं किया जा सकता है।बग देखें http://forge.typo3.org/issues/48022, diff: http://forge.typo3.org/projects/typo3v4-core/repository/revisions/f3f892ee2d3915b1934a7ce62cc921a3555cf8be/diff/typo3/sysext/scheduler/class। tx_scheduler_module.php – knb

1

एक अन्य आम कारण बड़े sys_log तालिकाओं के लिए अपनी sys_log भरने है ठीक करने के लिए प्रयास करें typo3 स्थापना में इस्तेमाल किसी एक्सटेंशन से मुद्दों/त्रुटियाँ हैं।

एक सामान्य उदाहरण जब tx_solr के एक पुराने संस्करण प्रयोग किया जाता है:

Core: Error handler (FE): PHP Warning: Invalid argument supplied for foreach() in typo3conf/ext/solr/classes/class.tx_solr_util.php 
Core: Error handler (FE): PHP Warning: array_reverse() expects parameter 1 to be array, null given in typo3conf/ext/solr/classes/class.tx_solr_util.php line 280 

रिकॉर्ड का यह सेट हर मिनट sys_log में पॉप अप होगा या तो जो समय की एक छोटी अवधि में रिकॉर्ड के लाखों लोगों की ओर जाता है।

सौभाग्य से, इस तरह के रिकॉर्ड sys_history और संबंधित रोलबैक कार्यक्षमता में रिकॉर्ड इतिहास पर कोई प्रभाव नहीं डालते हैं, इसलिए उन्हें हटाना सुरक्षित है।

आप एक बड़े sys_log इस संभावना LOCK समय समाप्ति के साथ मुद्दों का कारण होगा है, तो आप हटाना क्वेरी को सीमित करना होगा, तो:

delete from sys_log where details LIKE 'Core:%' LIMIT 200000;

1

लघु जवाब:

नहीं है, यह निश्चित रूप से एक अच्छा विचार नहीं है। यदि आप वास्तव में sys_log से सामान हटाना चाहते हैं, तो ध्यान रखें कि sys_history अभी भी इसका संदर्भ दे रहा है। आपको sys_history के लिए भी ऐसा ही करना चाहिए।

DELETE FROM sys_log WHERE NOT EXISTS 
(SELECT * FROM sys_history WHERE sys_history.sys_log_uid=sys_log.uid) 
AND recuid=0 AND tstamp < $timestamp LIMIT $limit 

अपनी आवश्यकताओं के लिए इस अनुकूलन करने के लिए स्वतंत्र महसूस:

या, बस निम्न कार्य करें।

क्या आप भी सुरक्षित रूप से (sys_history प्रभावित किए बिना) कर सकते हैं sys_log.error के साथ रिकॉर्ड हटा रहा है = 0.

स्पष्ट जवाब:

  • विकास में अपने परीक्षण करते हैं, न उत्पादन । विकास में अपनी त्रुटियों को खत्म करें। इस पर नज़र रखने के लिए अपने डेवलपर्स को प्रशिक्षित करें और ड्रिल करें।
  • लेकिन त्रुटियों-केवल उत्पादन
  • में
  • बारीकी sys_log मॉनिटर विकास पर (चेतावनी) वर्बोस के लिए, या अपने डिबगिंग स्तर सेट करें स्क्रिप्ट के द्वारा मैन्युअल

कुछ और सिफारिशें:

  • नियमित रूप से sys लॉग देखें और समस्याओं को खत्म करें। एक बार जब आप समस्या का ख्याल रखते हैं तो आप sys_log से विशिष्ट त्रुटि को हटा सकते हैं (sys_log.error! = 0, sys_log.details देखें)। आप एक डेटाबेस कमांड के साथ या नए typo3 संस्करणों पर यह कर सकते हैं का उपयोग करें "सिस्टम: लॉग ऑन" बैकएंड में और प्रयोग "मिलती-जुलती त्रुटियां हटाएं" बटन:

enter image description here

  • हर प्रमुख अद्यतन पर , हम truncate sys_log और truncate sys_history करते हैं, साथ ही लोलेवल क्लीनर का उपयोग करने के साथ (जो हटाए गए = 1 के साथ रिकॉर्ड हटा देता है) उदाहरण के लिए। संपादकों के करीब में किसी के साथ बात करना सुनिश्चित करें, हालांकि यह पूरे इतिहास को हटा देगा। हम केवल TYPO3 इंस्टेंस के पुराने संस्करण को आंतरिक पहुंच के साथ ऑनलाइन रखने के साथ ठीक करते हैं। हम चीजों को साफ रखना पसंद करते हैं :)

नए TYPO3 संस्करणों पर, sys_log और sys_history के बीच संबंधों की यह समस्या अब और नहीं होगी। TYPO3 9 में ब्रेकिंग चेंज #55298 देखें।

संबंधित मुद्दे

 संबंधित मुद्दे