I suggest using a WordPress cron job, in the form of a real server cron job (by default WordPress cronjobs are executed when a user visits the website).
Setting up a cron job (the easy way): https://kinsta.com/knowledgebase/wordpress-cron-job/
Real cronjob via server crontab: https://easyengine.io/tutorials/wordpress/wp-cron-crontab/