tp linux计划任务,使用Thinkphp6.0 在Linux搭建简易的计划任务

使用Thinkphp6.0 在Linux搭建简易的计划任务

实现流程

第一步:自定义指令

第二步:编写sh文件

第三步:Linux执行crontab -e

实现流程

1.创建一个自定义指令。

2.编写sh文件,随意放置,并给执行权限。

3.Linux执行crontab -e 编辑计划任务

第一步:自定义指令

1.进入项目根目录cmd,执行

php think make:command Contrab

输出:Command:app\command\Contrab created successfully.就说明自动的生成了文件

2.进入app\command\Contrab修改execute方法

protected function execute(Input $input, Output $output)

{

//app\index\controller(命名空间) Index::index(Index控制器下的index方法)

//注意要静态方法

call_user_func('app\index\controller\Index::index');

}

3.配置config/console.php文件

return [

'commands' => [

'contrab' => 'app\command\Contrab',

]

];

4.测试是否添加成功

php think

找到Available commands,看下面是否出现了你新添加的contrab,出现则添加成功!

build Build Application Dirs

clear Clear runtime file

contrab

help Displays help for a command

list Lists commands

run PHP Built-in Server for ThinkPHP

start this is a crawl tool!

version show thinkphp framework version

5.测试是否调用成功

php think contrab

输出:'hello world!' 则表示调用成功

因为我在Index/index 输出的是'hello world!'

PS:Thinkphp6自定义命令行的具体文档地址:https://www.kancloud.cn/manual/thinkphp6_0/1037651

第二步:编写sh文件

1.新建后缀为sh文件

508de1a394cc1823eeff9cdd882aec4d.png

2.用编辑器去打开编辑,我用的是Sublime text 3

#!/bin/bash

/usr/local/php7/bin/php /var/www/tp6/think contrab

说明:

/usr/local/php7/bin/php php执行文件路径

/var/www/tp6/think 项目根目录加上think

contrab 上面创建的命令名称

3.保存到任意位置

我是放在/var/www/sh目录下,记住这个位置,等会有用!

4.给文件执行权限

chmod u+x /var/www/sh/crond.sh

第三步:Linux执行crontab -e

1.编辑计划任务

crontab -e

输入i进入编辑模式

添加 */1 * * * * /var/www/sh/crond.sh

按esc 输入:wq保存退出

2.然后重启crond:

service crond restart

3.完成

现实了每一分钟输出了一次 hello world!

当然!具体业务需要各位大佬们自己编写啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ThinkPHP6.0 + Workerman长连接中使用异步任务,可以参照以下的步骤: 1. 安装Workerman扩展和Workerman服务端库。 可以使用Composer安装Workerman扩展和Workerman服务端库,可以通过以下命令进行安装: ```bash composer require workerman/workerman composer require workerman/channel ``` 2. 创建一个Workerman服务端脚本,并在其中定义异步任务处理方法。 ```php // 引入Workerman和Channel库 use Workerman\Worker; use Workerman\Channel\Client; // 创建一个Workerman服务端 $worker = new Worker('websocket://0.0.0.0:2346'); // 创建一个Channel服务端 $channel = new Channel\Server('127.0.0.1', 2206); // 在Worker进程中创建异步任务处理方法 $worker->onWorkerStart = function($worker) use ($channel) { // 创建一个异步任务 $task = new \Workerman\AsyncTask(); // 设置异步任务的处理方法 $task->onMessage = function($task, $data) use ($channel) { // 处理业务逻辑 $result = doSomething($data); // 将处理结果发送到Channel中 $channel->push($data['channel'], $result); }; // 将异步任务注册到Worker进程中 $worker->addTask($task); }; ``` 3. 在控制器中将需要处理的数据发送到异步任务中。 ```php use think\facade\Db; use Workerman\Channel\Client; class Index { public function index() { // 创建一个Channel客户端 $channel_client = new Client('127.0.0.1', 2206); // 发送数据到异步任务中处理 $data = [ 'channel' => 'my_channel', // 定义Channel名称 'data' => [ 'user_id' => 1, 'content' => 'hello world', ], ]; $task_id = $channel_client->asend($data); // 获取异步任务的处理结果 $result = $channel_client->pop($task_id); return json($result); } } ``` 4. 在Workerman服务端中监听Channel,获取异步任务的处理结果。 ```php // 在Worker进程中监听Channel,获取异步任务的处理结果 $worker->onWorkerStart = function($worker) use ($channel) { // 创建一个异步任务 $task = new \Workerman\AsyncTask(); // 设置异步任务的处理方法 $task->onMessage = function($task, $data) use ($channel) { // 处理业务逻辑 $result = doSomething($data); // 将处理结果发送到Channel中 $channel->push($data['channel'], $result); }; // 将异步任务注册到Worker进程中 $worker->addTask($task); // 监听Channel,获取异步任务的处理结果 $channel->on('my_channel', function($data) use ($worker) { // 处理异步任务的处理结果 $worker->connections[$data['fd']]->send(json_encode($data['result'])); }); }; ``` 通过以上的步骤,我们就可以在ThinkPHP6.0 + Workerman长连接中使用异步任务来处理业务逻辑了。需要注意的是,异步任务的处理方法会在Worker进程中的异步任务进程中执行,所以需要将需要的资源例如MySQL连接等在onWorkerStart回调函数中创建。同时,需要使用Channel来进行异步任务的处理结果获取,避免阻塞主进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值