Job queue: Difference between revisions
Line 13: | Line 13: | ||
=== Cron job === | === Cron job === | ||
< | <code> | ||
#!/bin/bash | |||
# Put the MediaWiki installation path on the line below | |||
MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki" | MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki" | ||
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime=3600" | |||
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime= | |||
echo Starting job service... | echo Starting job service... | ||
# Wait a minute after the server starts up to give other processes time to get started | |||
sleep 60 | |||
sleep | |||
echo Started. | echo Started. | ||
while true; do | while true; do | ||
# Job types that need to be run ASAP no matter how many of them are in the queue | |||
# Those jobs should be very "cheap" to run | |||
php $RUN_JOBS --type="enotifNotify" | |||
# Everything else, limit the number of jobs on each batch | |||
# The --wait parameter will pause the execution here until new jobs are added, | |||
php $RUN_JOBS --type="enotifNotify" | # to avoid running the loop without anything to do | ||
php $RUN_JOBS --wait --maxjobs=20 | |||
# Wait some seconds to let the CPU do other things, like handling web requests, etc | |||
echo Waiting for 10 seconds... | |||
sleep 10 | |||
php $RUN_JOBS --wait --maxjobs=20 | |||
echo Waiting for 10 seconds... | |||
sleep 10 | |||
done | done | ||
</code> | |||
=== Docker === | === Docker === |
Revision as of 11:06, 4 October 2024
|
The job queue in MediaWiki is a system designed to handle tasks that are too time-consuming or resource-intensive to be performed during a normal web request-response cycle.
The job queue allows MediaWiki to defer tasks that do not need immediate execution. This includes operations like updating link tables when templates change, sending notification emails, re-rendering pages after template edits, or any batch processing tasks.
Saintapedia reference
Example
Cron job
- !/bin/bash
- Put the MediaWiki installation path on the line below
MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki"
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime=3600"
echo Starting job service...
- Wait a minute after the server starts up to give other processes time to get started
sleep 60
echo Started.
while true; do
# Job types that need to be run ASAP no matter how many of them are in the queue
# Those jobs should be very "cheap" to run
php $RUN_JOBS --type="enotifNotify"
# Everything else, limit the number of jobs on each batch
# The --wait parameter will pause the execution here until new jobs are added,
# to avoid running the loop without anything to do
php $RUN_JOBS --wait --maxjobs=20
# Wait some seconds to let the CPU do other things, like handling web requests, etc
echo Waiting for 10 seconds...
sleep 10
done
Docker
* * * * * docker exec web php maintenance/runJobs.php --maxjobs 700 --maxtime=55
sudo crontab -e