In seldom cases, you will need to start looking into efficiency issues with Chamilo. This guide is a work in progress intended to help administrators optimize their Chamilo installtion.
Contents
1. Using xCache
See xCache's website for summary documentation.- On Debian/Ubuntu: sudo apt-get install php5-xcache
xcache.shm_scheme = "mmap" xcache.size = 32M xcache.count = 2 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0 xcache.var_size = 16M xcache.var_count = 16 xcache.var_slots = 8K xcache.var_ttl = 60 xcache.var_maxttl = 300 xcache.var_gc_interval = 300 xcache.test = OffxCache will feel useless until you actually start to put some variables in cache. If you're showing the "Who is online" counter, that's one of the best item there is to implement xCache.
For example, you could implement it this way (in main/inc/banner.inc.php):
$xc = function_exists('xcache_isset'); $number = 0; if ($xc && xcache_isset('campus_chamilo_org_whoisonline_count_simple')) { $number = xcache_get('campus_chamilo_org_whoisonline_count_simple'); } else { $number = who_is_online_count(api_get_setting('time_limit_whosonline')); xcache_set('campus_chamilo_org_whoisonline_count_simple',$number); } $number_online_in_course = 0; if(!empty($_course['id'])) { if ($xc && xcache_isset('campus_chamilo_org_whoisonline_count_simple_'.$_course['id'])) { $number_online_in_course = xcache_get('campus_chamilo_org_whoisonline_count_simple_'.$_course['id']); } else { $number_online_in_course = who_is_online_in_this_course_count(api_get_user_id(), api_get_setting('time_limit_whosonline'), $_course['id']); xcache_set('campus_chamilo_org_whoisonline_count_simple_'.$_course['id'],$number_online_in_course); } }Note that, as xCache is a shared caching system, it is very important to prefix your variables with a domain name or some kind of identifier, otherwise it would end up in disaster if you use a shared server for several portals.
2. Slow queries
Enable slow_queries in /etc/mysqld/my.cnf, restart MySQL then follow using sudo tail -f /var/log/mysql/mysql-slow.log3. Indexes caching
One good reference: MySQL documentation on multiple key caches4. Sessions directories
php_admin_value session.save_path 1;/var/www/test.chamilo.org/sessions/5. Users upload directories
Create 10 directories inside the main/upload/users directory (from 0 to 9) and update your admin settings. This has to be done at install & configuration time, otherwise you might loose user data (or have to write a script for data distribution).Don't have time or resources to optimize your Chamilo installation yourself? Hire an official Chamilo provider and get it sorted out professionally by specialists.