현재 위치: > 최신 기사 목록> PHP 및 MySQL의 대기열 지연 작업 및 타이밍 작업에 대한 실제 응용 프로그램 가이드

PHP 및 MySQL의 대기열 지연 작업 및 타이밍 작업에 대한 실제 응용 프로그램 가이드

M66 2025-10-05

소개

인터넷 서비스의 실시간 및 높은 동시성에 대한 요구 사항이 계속 증가함에 따라 대기열 지연 작업 및 타이밍 작업은 시스템 최적화의 중요한 수단이되었습니다. 이 기사는 PHP와 MySQL 에서이 두 가지 유형의 작업을 사용하는 방법을 소개하고 개발자가 신속하게 시작할 수 있도록 실용적인 코드 예제를 제공합니다.

대기열 지연 작업의 응용 프로그램 시나리오

지연 작업은 작업을 대기열에 넣고 지연 시간을 설정하고 실행하기 전에 실행되기를 기다리는 것을 나타냅니다. SMS 확인 코드 전송, 이메일 전송, 보고서 생성과 같은 처리 지연에 종종 사용됩니다.

PHP에서 Redis는 큐 서비스로 사용될 수 있으며 PHP의 Redis 확장과 함께 지연된 작업 관리를 구현할 수 있습니다.

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);
}

위의 코드는 Redis를 연결하고 작업을 지연 대기열에 넣는 방법을 보여주고, 루핑으로 시간에 도달 한 작업을 확인하고 실행하는 방법을 보여줍니다.

타이밍 작업에 대한 응용 프로그램 시나리오

타이밍 작업은 하루에 한 번 또는 한 시간에 한 번과 같은 미리 정해진 시간 간격으로 작업을 수행합니다. 데이터 백업 및 로그 청소와 같은주기적인 작업에 일반적으로 사용됩니다.

PHP에서는 타이밍 작업을 Crontab 명령을 통해 예약 할 수 있습니다.

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();

고정 된 시간 작업 및주기적인 작업은 코드에 정의되며 작업은 자동 실행을 보장하기 위해 Crontab을 통해 시스템 시점 작업 목록에 추가됩니다.

요약

PHP 및 MySQL 개발에서 큐 지연 작업 및 타이밍 작업은 시스템의 실시간 및 자동화 수준을 효과적으로 향상시킬 수 있습니다. 지연 작업은 지연된 실행이 필요한 처리 작업에 적합한 반면, 타이밍 작업은주기적인 작업 스케줄링에 적합합니다. 이 기사의 샘플 코드를 통해 개발자는 이러한 기능을 빠르게 구현하고 실제 비즈니스 요구에 따라 확장 및 최적화 할 수 있습니다.