History: Cron Job to Rebuild Search Index
Source of version: 19 (current)
Copy to clipboard
This page should merge with ((Rebuild Unified Index)) ! 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 ((Search and List from Unified Index|#From_the_command_line|Unified Index - from the command line)) {CODE(caption="Add this line for a daily rebuild in Tiki11 and up" colors="shell")}0 0 * * * cd /var/www/html/tiki; php console.php index:rebuild >/dev/null 2>&1{CODE} {CODE(caption="To set RAM to 4 GB, increase max execution time, force an initial index cleanup and log" colors="shell")}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{CODE} {REMARKSBOX(type=note title=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.''{REMARKSBOX} !! 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: {CODE(caption="Cron job to run shell script" colors="shell")}0 0 * * * sh cron.sh >/dev/null 2>&1{CODE} The shell script -+cron.sh+- would consist of the following: {CODE(caption="cron.sh" colors="shell")} #!/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 {CODE} Related: * ((Batch)) * ((Cron)) * ((Search)) * ((Search and List from Unified Index)) * ((Scheduler)) -=alias=- * (alias(Cron Job for Search))