現在の位置: ホーム> 最新記事一覧> PHPおよびMySQLのキュー遅延タスクとタイミングタスクのための実用アプリケーションガイド

PHPおよびMySQLのキュー遅延タスクとタイミングタスクのための実用アプリケーションガイド

M66 2025-10-05

導入

インターネットサービスのリアルタイムおよび高い並行性の要件が増加し続けるにつれて、キューの遅延タスクとタイミングタスクは、システムの最適化の重要な手段になりました。この記事では、PHPとMySQLでこれら2つのタイプのタスクを使用する方法を紹介し、開発者が迅速に開始できるように実用的なコード例を提供します。

キュー遅延タスクのアプリケーションシナリオ

遅延タスクとは、タスクをキューに入れ、遅延時間を設定し、実行する前に実行する時間を待つことを指します。 SMS検証コードの送信、電子メールの送信、レポートの生成など、遅延処理によく使用されます。

PHPでは、Redisをキューサービスとして使用でき、遅延タスク管理はPHPのRedis拡張機能と組み合わせて実装できます。

コード例:

 // 接続するRedisサーバ
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// タスクをキューに入れます,遅延時間をに設定します602番
$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);
    }
    // 寝る12番后继续检查队列
    sleep(1);
}

上記のコードは、Redisを接続し、タスクを遅延キューに入れ、ループで時間に到達したタスクを確認および実行する方法を示しています。

タイミングタスクのアプリケーションシナリオ

タイミングタスクは、1日1回または1時間に1回など、所定の時間間隔で操作を実行します。一般に、データのバックアップやログクリーニングなどの定期的なタスクに使用されます。

PHPでは、Crontabコマンドを介してタイミングタスクをスケジュールできます。

コード例:

 // 固定時間タスクを実行します
function doTask() {
    echo "Fixed time task executed.";
}

// 定期的なタスクを実行します
function doPeriodicTask() {
    echo "Periodic task executed.";
}

// 毎朝1回実行するように指定します
$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");

// 1時間ごとに指定します5数分に1回実行します
$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開発では、キュー遅延タスクとタイミングタスクは、システムのリアルタイムおよび自動化レベルを効果的に改善できます。遅延タスクは、遅延実行を必要とする操作の処理に適していますが、タイミングタスクは定期的なタスクスケジューリングに適しています。この記事のサンプルコードを通じて、開発者はこれらの機能を迅速に実装し、実際のビジネスニーズに応じて拡張および最適化できます。