Loading...
 

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

Add this line for a daily rebuild in Tiki11 and up
0 0 * * * cd /var/www/html/tiki; php console.php index:rebuild >/dev/null 2>&1

To set RAM to 4 GB, increase max execution time, force an initial index cleanup and log
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

 Tips

  • 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.

Works in Shell but not as a Cron Job

The environment for a cron job (e.g., the PATH variable) 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 PATH variable before running the rebuild command.

To find out what the PATH variable should be, use the env command 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:

Cron job to run shell script
0 0 * * * sh cron.sh >/dev/null 2>&1


The shell script cron.sh would consist of the following:

cron.sh
#!/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 index:rebuild


Related:

alias

Created by: Last Modification: Saturday 10 February, 2018 22:06:14 GMT-0000 by Marc Laporte
List Slides
Show PHP error messages