Skip to content

Instantly share code, notes, and snippets.

@dam1r89
Created April 20, 2020 09:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dam1r89/fe9bd02b28b49a4d450c41ebdc590df0 to your computer and use it in GitHub Desktop.
Save dam1r89/fe9bd02b28b49a4d450c41ebdc590df0 to your computer and use it in GitHub Desktop.
Run Laravel scheduler in docker container every minute
#!/bin/bash
# Start at :30 seconds
WAIT_FOR_MIDDLE_OF_MINUTE=$(( ( 90 - $(date +%S) ) % 60 ))
sleep $WAIT_FOR_MIDDLE_OF_MINUTE
START=$(date +%s%N)
INTERVAL_SECONDS=60
INTERVAL_NANOSECONDS=$(( $INTERVAL_SECONDS * 1000000000 ))
i=1
while true
do
php /app/artisan schedule:run &
CURRENT=$(date +%s%N)
SINCE_START=$(expr $CURRENT - $START)
EXPECTED_SINCE_START=$(( x * $INTERVAL_NANOSECONDS ))
DIFF_ERROR=$(( $EXPECTED_SINCE_START - $SINCE_START ))
INTERVAL_SECONDS_WITH_CORRECTION=$(echo "$INTERVAL_SECONDS + ( $DIFF_ERROR / 1000000000 )" | bc -l)
# echo "miliseconds error" $(( $DIFF_ERROR / 1000000 )) " new interval " $INTERVAL_SECONDS_WITH_CORRECTION
sleep $INTERVAL_SECONDS_WITH_CORRECTION
x=$(( $x + 1 ))
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment