PHP code example of sevming / delayed-task

1. Go to this page and download the library: Download sevming/delayed-task library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

sevming / delayed-task example snippets

 php

use Sevming\DelayedTask\TaskServer;

', 6379, '123456');
    // 开启调试模式
    $server->debug = true;    
    $server->runAll();
} catch (Exception $e) {
    exit($e->getMessage());
}
 php

use Sevming\DelayedTask\TaskClient;

', 6379, '123456');

    // 1. 每隔3秒调用Order:return,当处理成功后调用Order:success
    $client->add([
        'topic' => 'order:return',
        'id' => 1,
        'call' => ['Order', 'return'],
        'intervalTime' => 3,
        'callback' => ['Order', 'success'],
    ]);

    // 2. 10秒后调用Order:receipt,仅调用1次
    $client->add([
        'topic' => 'order:receipt',
        'id' => 2,
        'call' => ['Order', 'receipt'],
        'intervalTime' => 10,
        'persistent' => false,
    ]);

    // 3. 设置优先级,每隔 0|30|60秒 调用Order:timeout,调用三次后结束调用
    $client->add([
        'topic' => 'order:timeout',
        'id' => 3,
        'call' => ['Order', 'timeout'],
        'priority' => 2,
        'intervalTime' => '0,30,60',
        'persistent' => false,
    ]);

    // 4. 每隔 0|10|20秒 调用Order:refund,调用三次后,间隔时间为20秒调用一次
    $client->add([
        'topic' => 'order:refund',
        'id' => 4,
        'call' => ['Order', 'refund'],
        'intervalTime' => '0,10,20',
    ]);

    // 5. 每隔 0|15|30秒 请求一次url,请求三次后,不再请求
    $client->add([
        'topic' => 'order:notify',
        'id' => 5,
        'url' => '192.168.1.77:8080',
        'params' => [
            'content' => 'hello'
        ],
        'intervalTime' => '0,15,30',
        'persistent' => false,
    ]);

    // 6. 删除任务,根据添加任务时的topic和id
    $client->del('order:return', 1);
} catch (Exception $e) {
    exit($e->getMessage());
}
 php


class Order
{
    public function return(array $task)
    {
        echo __FUNCTION__ . ",id={$task['id']},createTime={$task['createTime']},count={$task['rule']['count']},runTime="  . date('Y-m-d H:i:s') . PHP_EOL;
        // 返回success,则任务结束
        return 'success';
    }

    public function receipt(array $task)
    {
        echo __FUNCTION__ . ",id={$task['id']},createTime={$task['createTime']},count={$task['rule']['count']},runTime=" . date('Y-m-d H:i:s') . PHP_EOL;
    }

    public function timeout(array $task)
    {
        echo __FUNCTION__ . ",id={$task['id']},createTime={$task['createTime']},count={$task['rule']['count']},runTime=" . date('Y-m-d H:i:s') . PHP_EOL;
    }

    public function refund(array $task)
    {
        echo __FUNCTION__ . ",id={$task['id']},createTime={$task['createTime']},count={$task['rule']['count']},runTime=" . date('Y-m-d H:i:s') . PHP_EOL;
    }

    public function success(array $task)
    {
        var_dump($task);
        echo "任务处理成功\n";
    }
}