Cron Job to Rebuild Search Index
You can rebuild index by visiting example.com/tiki-admin.php?page=search&rebuild=now
Since Tiki9, if you have a large site and do not use MySQL Full Text search, you should set up a Cron job to regularly rebuild the index.
How to do it varies from server to server, but here is an example. For a fuller description of the commands themselves, please see Unified Index - from the command line
marclaporte@server:/var/www/html/tiki$ sudo su www-data $ crontab -e
0 0 * * * cd /var/www/html/tiki; php lib/search/shell.php rebuild >/dev/null 2>&1
- The last part ">/dev/null 2>&1" indicates to discard the output from the command (standard output and any errors messages produced).
- The first 5 characters (separated by spaces) of the command set the time and frequency that the cron job will run. The characters refer to (in order): minute, hour, day, month, and weekday. So the above (0 0 * * * ) will run at midnight (0 minutes and 0 hour) every night.
0 0 * * * cd /var/www/html/tiki; php console.php index:rebuild >/dev/null 2>&1
0 0 * * * cd /var/www/html/tiki; php -dmemory_limit=4G -dmax_execution_time=300 console.php index:rebuild --force --log >/dev/null 2>&1
Works in Shell but not as a Cron JobThe environment for a cron job (e.g., the
PATHvariable) may not be the same as in shell (using SSL can cause this). That means that the above scripts may work in shell but not as a cron job. To solve this, set the cron job to run a shell script that sets the
PATHvariable before running the rebuild command.
To find out what the
PATHvariable should be, use the
envcommand in shell on the server where the Tiki site is that you're rebuilding the index for.
Let's say the shell script is called
cron.sh. The cron job would be as follows:
0 0 * * * sh cron.sh >/dev/null 2>&1
The shell script
cron.shwould consist of the following:
#!/bin/bash #this is the exact same setting as in the shell environment PATH=/home/useraccount/perl5/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/useraccount/bin #this is the actual command to rebuild the index php -dmemory_limit=4G -dmax_execution_time=300 /home/useraccount/public_html/console.php i:r