# think-crontab for ThinkPHP5.1.*
github地址:
https://github.com/xieyongfa123/think-crontab
## 安裝
> composer require xieyongfa/think-crontab
## 開始使用
> 創建如下數據表
```
CREATE TABLE `crontab` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任務名',
`class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '類名',
`payload` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL NOT NULL COMMENT '參數',
`last_execute_time` datetime(0) NOT NULL COMMENT '上次執行時間',
`next_execute_time` datetime(0) NOT NULL COMMENT '下次執行時間',
`status` tinyint(2) NOT NULL DEFAULT 1 COMMENT '0禁用 1啟用',
`interval_sec` int(11) NOT NULL DEFAULT 60 COMMENT '執行間隔 單位秒',
`create_time` datetime(0) NOT NULL COMMENT '創建時間',
`update_time` datetime(0) NOT NULL COMMENT '更新時間',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
```
## 創建計劃任務
> `push_crontab($name, $class, $payload = [], $interval_sec = 60)`
`$name` 是任務名
`$class` 是類名
`$payload` 是參數 數組格式
`$interval_sec` 是任務執行周期 默認60秒
### 創建計劃任務例子
```
$payload = ['name' => 'thinkphp'];
push_crontab('test', 'app\\test\\controller\\echo_date', $payload, 60);
```
## 監聽計劃并執行,強烈建議配合supervisor使用,保證進程常駐
> php think crontab --sleep=60 --memory=8
sleep參數:間隔多久查詢一次 單位秒
memory參數:單個進程消耗內存超過多少M自動退出(配合supervisor可達到自動重啟效果,防止內存溢出)
## 開發幫助及交流
如您對本文感興趣想與我聯系交流 您可以
+ 郵件至:xieyongfa@ecarde.cn
+ QQ:2392523899 [點我聊天](http://wpa.qq.com/msgrd?v=3&uin=2392523899&site=qq&menu=yes&from=message&isappinstalled=0)
+ 微信交流
