<commit_before># swoole-delay-jobs
> 基于swoole实现的延迟任务

## 功能　&& 实现原理
1. 基于时间轮实现
2. 使用redis `zset` 做数据存储
3. 使用swoole做定时触发
4. 使用子进程做数据处理　（否）
5. 消息落地不丢失处理（否）
6. 超时任务处理（否）
7. 失败任务达到最大失败次数处理（否）
8. 消息幂等性设置（否）
9. 进程异常中断处理，从启后保证还能正常执行（否）

## 安装 && 启动
#### 安装依赖
1. redis 扩展
2. seaslog 扩展
3. swoole > 1.8.9

#### 安装程序
1. git clone <EMAIL>:wjcgithub/swoole-delay-jobs.git
2. cd swoole-delay-jobs
3. composer install

#### 配置
> [time_wheel]
- slotLength=3600  ; 单位second
- tickDuration=1   ; 单位second

>[worker]
- worker_num=20

> [queue]
- default=redis
- redis[host]=127.0.0.1
- redis[port]=6379

### 启动测试
- php start.php
- php /test/TestPush.php

## SeasLog日志记录
```php
[SeasLog]
seaslog.default_basepath = /home/wwwlogs/seaslog
seaslog.default_logger = default
seaslog.disting_type = 1
seaslog.disting_by_hour = 0
seaslog.use_buffer = 0
seaslog.buffer_size = 20
seaslog.level = 0
seaslog.trace_error = 1
seaslog.trace_exception = 0
seaslog.default_datetime_format = "Y:m:d H:i:s"
seaslog.appender = 1
seaslog.remote_host = 127.0.0.1
seaslog.remote_port = 514
```<commit_msg>添加项目说明<commit_after># swoole-delay-jobs
> 基于swoole实现的延迟任务

## 功能　&& 实现原理
1. 基于时间轮实现
2. 使用redis `zset` 做数据存储
3. 使用swoole做定时触发
4. 使用子进程做数据处理　（否）
5. 消息落地不丢失处理（否）
6. 超时任务处理（否）
7. 失败任务达到最大失败次数处理（否）
8. 消息幂等性设置（否）
9. 进程异常中断处理，从启后保证还能正常执行（否）

## 安装 && 启动
### 安装依赖
1. redis 扩展
2. seaslog 扩展
3. swoole > 1.8.9

### 安装程序
1. git clone <EMAIL>:wjcgithub/swoole-delay-jobs.git
2. cd swoole-delay-jobs
3. composer install

### 配置
> [time_wheel]
- slotLength=3600  ; 单位second
- tickDuration=1   ; 单位second

>[worker]
- worker_num=20

> [queue]
- default=redis
- redis[host]=127.0.0.1
- redis[port]=6379

### 启动测试
- php start.php
- php /test/TestPush.php

## SeasLog日志记录
```php
[SeasLog]
seaslog.default_basepath = /home/wwwlogs/seaslog
seaslog.default_logger = default
seaslog.disting_type = 1
seaslog.disting_by_hour = 0
seaslog.use_buffer = 0
seaslog.buffer_size = 20
seaslog.level = 0
seaslog.trace_error = 1
seaslog.trace_exception = 0
seaslog.default_datetime_format = "Y:m:d H:i:s"
seaslog.appender = 1
seaslog.remote_host = 127.0.0.1
seaslog.remote_port = 514
```
{'fraction_non_alphanumeric': 0.14589235127478753, 'fraction_numerical': 0.05004721435316336, 'mean_word_length': 4.232098765432099, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2906062', 'n_tokens_mistral': 1216, 'n_tokens_neox': 1255, 'n_words': 192}