I have a PHP web application with a particularly slow endpoint and I have diagnosed that this is being caused by a complicated function call.
It is not essential that the function call is completed before the response is returned which means that the function call could be put on a queue and executed by a worker. It does need to be executed within ten seconds though.
The problem I have is that I cannot change the infrastructure this web application runs on in any way. This is far from ideal but it is an immovable business requirement. I only have Cron, MySQL, Redis, Apache and PHP at my disposal.
How can I implement a worker system using only Cron?
I'm fairly certain that using Redis to store the queue of function calls is a good start. Could I use Cron as a poor man's replacement to Supervisor to kick start the worker script? Possibly in conjunction with flock to avoid Cronjobs overlapping?
Another idea I had was to use Cron to run the worker script every second. However Cron doesn't support units smaller than minutes so I would have to write a Bash script which does some sort of looping to achieve this.
If anyone has any more robust or sensible or proven ideas I would love to hear them. Thanks.