Home  >  Article  >  Backend Development  >  Application scenarios of queue delayed tasks and scheduled tasks in PHP and MySQL

Application scenarios of queue delayed tasks and scheduled tasks in PHP and MySQL

王林
王林Original
2023-10-15 12:46:56889browse

Application scenarios of queue delayed tasks and scheduled tasks in PHP and MySQL

Application scenarios of queue delayed tasks and scheduled tasks in PHP and MySQL

Introduction:
With the development of the Internet, for real-time and high concurrency The demands are getting higher and higher. In order to cope with these demands, we often need to use queued delayed tasks and scheduled tasks. This article will focus on how to apply queue delayed tasks and scheduled tasks in PHP and MySQL, and give specific code examples.

1. Application scenarios of delayed tasks in queues:
Delayed tasks in queues refer to putting tasks into the queue, setting a delay time, and then executing the tasks after a period of time. This method is often used in scenarios that require delayed processing, such as sending SMS verification codes, sending emails, generating reports, etc.

In PHP, we can use Redis as a queue service and combine it with PHP's Redis extension library to implement delayed tasks in the queue.

Code example:

// 连接Redis服务器
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 将任务放入队列,设置延迟时间为60秒
$job = ['to' => 'example@example.com', 'subject' => 'Test Email', 'content' => 'Hello, World!'];
$delay = 60;
$redis->zAdd('delayed_queue', time() + $delay, json_encode($job));

// 从队列中取出延迟时间已到的任务,并执行
while (true) {
    $jobs = $redis->zRangeByScore('delayed_queue', 0, time(), ['limit' => [0, 1]]);
    if (!empty($jobs)) {
        $job = array_shift($jobs);
        // 执行任务
        sendEmail(json_decode($job, true));
        // 从队列中删除已执行的任务
        $redis->zRem('delayed_queue', $job);
    }
    // 休眠1秒后再继续检查队列
    sleep(1);
}

?>

The above code first connects to the Redis server and then puts the task into the delay queue , set the delay time to 60 seconds. Then the queue is continuously checked through a loop. If there is a task whose delay time has expired, the task is executed and the executed task is deleted from the queue.

2. Application scenarios of scheduled tasks:
Scheduled tasks refer to executing tasks according to predetermined time intervals, such as once a day, once an hour, etc. This method is often used in scenarios that require periodic execution, such as data backup, log cleaning, etc.

In PHP, we can use the crontab command to schedule scheduled tasks.

Code example:

// 执行定时任务
function doTask() {
    // 固定时间点执行的任务
    echo "Fixed time task executed.

";

}

// 执行周期性任务
function doPeriodicTask() {
    // 周期性执行的任务
    echo "Periodic task executed.

";

}

// 指定固定时间点的定时任务(例如每天凌晨执行)
$cron = '0 0 * * *';
exec("crontab -l > tmpcron");
file_put_contents("tmpcron", "$cron php -f /path/to/task.php >> /path/to/output.log 2>&1

", FILE_APPEND);

exec("crontab tmpcron");

// 间隔一小时执行一次的定时任务(每小时的第5分钟执行)
$cron = '5 * * * *';
exec("crontab -l > tmpcron");
file_put_contents("tmpcron", "$cron php -f /path/to/task.php >> /path/to/output.log 2>&1

", FILE_APPEND);

exec("crontab tmpcron");

// 执行任务
doTask();
doPeriodicTask();

?>

In the above code, two functions are first defined: doTask() and doPeriodicTask(), which represent fixed time respectively. Point-executed tasks and periodically executed tasks.

Then call the crontab command through the command line to add the scheduled task to the system's scheduled task list. Among them, the cron parameter is used to specify the execution time rule of the task, which means it will be executed once every morning and once every fifth minute of every hour. The php command is used to execute the script file where the scheduled task is located and redirect the output to the output log file.

Finally, the two functions doTask() and doPeriodicTask() are called in the code to represent the actual execution of the task.

Summary:
Queue delayed tasks and scheduled tasks have a wide range of application scenarios in PHP and MySQL. By using delayed tasks in the queue, we can implement some tasks that require delayed processing and improve the real-time performance of the system. By using scheduled tasks, we can implement some tasks that need to be executed periodically and improve the automation of the system. The above gives specific code examples for applying queue delayed tasks and scheduled tasks in PHP and MySQL for readers' reference.

The above is the detailed content of Application scenarios of queue delayed tasks and scheduled tasks in PHP and MySQL. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn