soen/delay-alone

1.0.0-alpha2 2020-07-15 05:51 UTC

This package is auto-updated.

Last update: 2024-04-29 04:20:55 UTC


README

使用composer安装:

composer require soen/delay-alone:1.0.0-alpha2

创建demo示例:

demo项目根目录创建public.php:
<?php
require_once './vendor/autoload.php';
$redisConfig = [
    'host'          =>  '127.0.0.1',
    'port'          =>  '6379',
    'database'      =>  '0',
    'password'      =>  '',
    'timeout'       =>  60
];
根目录创建index.php(扫描数据服务端):
<?php
require_once 'public.php';
$redis = (new \Soen\Delay\Alone\Redis($redisConfig))->getDriver();
$deplayer = new \Soen\Delay\Alone\Polling(1, $redis);
$deplayer->run();

执行php index.php,会运行延迟队列的服务端,扫描到期的数据并移到延迟队列

根目录创建push.php(提供者)*:
<?php
require_once 'public.php';
$redis = (new \Soen\Delay\Alone\Redis($redisConfig))->getDriver();
$client = new \Soen\Delay\Alone\Client\Client($redis);

//生成随机数 body 数据
$strs="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
$name=substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),10);
/**
 * 随机生成ID,固定topic1, 随机body数据,延迟队列延迟10秒更新
 */
$has = $client->push(rand(1,999),'topic1',['a'=>$name,'b'=>$name],10);
if($has){
    echo '数据提交成功'.PHP_EOL;
}else {
    echo '提交失败'.PHP_EOL;
}

cli内执行 php push.php, 就会提交一组等待处理的数据

根目录创建pop.php(消费者):
<?php
require_once 'public.php';
$redis = (new \Soen\Delay\Alone\Redis($redisConfig))->getDriver();
$client = new Soen\Delay\Alone\Client\Client($redis);
ini_set('default_socket_timeout', -1);
while (true){
    $data = $client->bPop('topic1', 3600);
    if(!$data){
        continue;
    }
    var_dump($data);
}

cli执行php pop.php,进行队列消费