На кратко- написах няколко бързи реда код, които проверяват ерор лог файла на OpenCart и когато той надвиши дадена стойност (при мен това е 1MB) да излезе предупреждение за размера на .txt файла с грешките. Има и бърза връзка за изчистване на лога, като е препоръчително първо да се поправят самите грешки.
Защо го направих? Защото ми се наложи да прехвърлям един онлайн магазин базиран на OpenCart от един хостигн на друг (заради голям трафик) и установих, че при наличието на едва 500- 600 продукта размера на файловете за целият магазин беше над 5GB. След малко ровене установих, че файла „/system/logs/error.txt“ е с размери доста над 3GB.
Проблем: Проблемът беше в това, че наблюдаваме ерор лога само докато правим магазина и няколко седмици след стартиране, но поради една или друга причина се появява една или много грешки, за които не разбираме. В моят случай беше инсталиран модул, който не можеше да си намери езиковият файл в /language/ папката и даваше грешка при всяко зареждане на който и да е продукт. В крайна сметка, при голям трафик и достатъчно време този текстов документ е нараснал доста и създава проблеми.
Всичко това се случва, при една грешка, която е записана във файла 2 100 000 пъти за 6 месеца, това е на база данни от статистиката за посещенията на сайта от началото на създаването му.
Решението: Ние намерихме решение на този проблем с едни просто съобщение в хедъра на административната част, което изглежда така:
разбира се ние не препоръчваме направо да чистите файла, а първо да поправите грешките, за да не се повтаря същия проблем. 🙂
Ето го и кода на нашето решение:
<?php
$filename = $file = DIR_LOGS . $this->config->get(‘config_error_filename’);
if (filesize($filename) > 1000000) {
echo ‘<div class=“warning“ >’;
echo $filename . ‘: ‘ . filesize($filename) ;
echo ‘ bytes’;
echo ‘<a href=“‘;
echo $this->data[‘clear’] = $this->url->link(‘tool/error_log/clear’, ‘token=’ . $this->session->data[‘token’], ‘SSL’);
echo ‘“ > CLEAR</a>’;
echo ‘</div>’;
} else {
}
?>
Като за разкош сме добавили и малко CSS:
<style type=“text/css“>
#content {
padding-top: 20px!important;
}
.warning {
position: absolute!important;
margin-top: 4px;
margin-left: 30px;
}
</style>
Всичко това си го добавяте най- накрая на вашият header.tpl файл, който се намира в /admin/view/template/common/header.tpl и готово, ще получавате предупреждение ако файлът error.txt надвиши 1MB, а не да го забравяте като нас.
Все пак направихме и един .xml файл, който направо да си го поставите в папката на vqmod-а (/vqmod/xml/) ако имате инсталиран такъв и да получавате такова съобщение. Ето го и самият .xml файл: error_log_check_and_alert.xml
Можете също и да разгледате това семпло допълнение към OpenCart и в GitHub: https://github.com/rpenchev/error_log_check_opencart