服务器php 启动命令_服务端的cli方式运行

既然是结合tp5,咱当然要借鉴tp5的优势

# tp5自定义命令行

这个需要自己看tp5的官方文档,直接搜索就能找到,自己添加command.php文件,我的如下

~~~

/**

* Time: 13:55

*/

return [

'iss\crontab\command\IssServer',

'iss\crontab\command\IssClient',

];

~~~

但是要特别注意,文件的位置,放在目录application/command.php处,或者在入口文件中指定了配置文件目录,则将command.php放在配置目录下的根目录(必须的),因为查看源码如下:

![](https://box.kancloud.cn/e57894dd0b2f39521630a30c49e08fa5_1178x529.png)

然后再添加个实例类来调用extend扩展中的服务端类,这样写只是为了规范些

~~~

namespace iss\crontab\command;

use think\console\Command;

use think\console\Input;

use think\console\Output;

class IssServer extends Command {

protected function configure(){

$this->setName('IssServer')->setDescription('定时任务服务端');

}

/**

* 启动服务端服务

* @return \lib\crontab\IssServer

*/

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

$issServer= new \lib\crontab\IssServer();

if($issServer){

$output->writeln('服务端启动成功!');

}else{

$output->writeln('Sorry,服务端启动失败!');

}

}

}

?>

~~~

然后linux中cd到项目根目录,因为我们要用到项目中cli跟入口文件think,所以必须先cd到项目根目录

运行命令

`php think IssServer`

就可以将服务端实例化了,就不必在服务端类里自己new对象了

有些同学可能在安装的时候没有将php变量加入到环境变量中,系统不能识别php命令

可以运行如下命令(/usr/local/php是服务器上php的安装目录)同样可以启动

`/usr/local/php/bin/php -c /usr/local/php/etc/php.ini think IssServer`

这样就可以在扩展中轻松使用tp5的数据库连接等特性

# 设置程序进入后台作为守护进程一直运行

![](https://box.kancloud.cn/2cba32c28d2c88b60f9306f71d2f162f_1288x603.png)

首先是配置server的daemonize属性并加载到服务器启动中,开启守护进程,接着在linux窗口运行启动命令时在命令后加“&”即可,例如

`php think IssServer &`

~~~

class IssServer{

private $serv;

private $debug = true;

public function __construct()

{

$config = config('crontab.server');

//extract($config);

$this->serv = new \swoole_server($config['host'], $config['port']);

$this->serv->set(array(

'daemonize' => $config['daemonize'], //设置程序进入后台作为守护进程运行

'dispatch_mode' => $config['dispatch_mode'], //指定数据包分发策略。1 => 轮循模式,收到会轮循分配给每一个worker进程 2 => 固定模式,根据连接的文件描述符分配worker。这样可以保证同一个连接发来的数据只会被同一个worker处理 3 => 抢占模式,主进程会根据Worker的忙闲状态选择投递,只会投递给处于闲置状态的Worker

'task_worker_num' => $config['task_worker_num'], //服务器开启的task进程数。

'task_ipc_mode' => $config['task_ipc_mode'], //设置task进程与worker进程之间通信的方式。

'log_file' => $config['log_file']

));

$this->serv->on('Start', array($this, 'onStart'));

$this->serv->on('WorkerStart', array($this, 'onWorkerStart'));

$this->serv->on('Connect', array($this, 'onConnect'));

$this->serv->on('Receive', array($this, 'onReceive'));

~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国计算机等级考试题库二级C操作题100套(第47套)

第47套: 给定程序中,函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。 例如,形参s所指的字符串为:abcAbsmaxless,程序执…

android调用照相机拍照获取照片并做简单剪裁

1.调用系统的照相机程序 Intent intent new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, TAKE_PHOTO_WITH_DATA); 2.在onActivityResult中处理返回的data final Bitmap photo data.getParcelableExtra("data"); 如果不需要做剪切处…

用户id可以出现在url中吗_下载Google Drive中的文件

通过Python下载Google Drive中的文件的代码如下:download_googledrive.pyimport

LockSupport的源码实现原理以及应用

一、为什么使用LockSupport类 如果只是LockSupport在使用起来比Object的wait/notify简单, 那还真没必要专门讲解下LockSupport。最主要的是灵活性。 上边的例子代码中,主线程调用了Thread.sleep(1000)方法来等待线程A计算完成进入wait状态。如果去掉Thr…

php网址变量怎么输出,【PHP网站】如何使用dedecms v5.7前台模版里输出变量

dedecmsv5.7是PHP网站内容管理系统,本篇文章将介绍如何使用dedecmsv5.7 前台模版来输出变量,具有一定参考意义,感兴趣的朋友了解一下吧。如何在PHP文件查询出来的数据赋值给前端页面展示出来?例如:PHP文件:…

全国计算机等级考试题库二级C操作题100套(第48套)

第48套: 给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对 应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参s所指的字符串为:abs5def126jkm8,程序执行后的输出结…

Nginx内核参数相关的优化设定

Nginx内核参数在使用的时候有不少问题需要我们解决,其中在优化方面就需要我们格外的注意。在下面就是对Nginx内核参数优化的详细介绍,希望大家有所收获。 关于Nginx内核参数的优化: net.ipv4.tcp_max_tw_buckets 6000 timewait的数量&#x…

python3 爬虫 requests安装_BOSS直聘招聘信息获取之爬虫工具分析

点击蓝色“不太灵光的程序员”关注我哟加个“星标”,每天上午 09:30,干货推送!文中使用的组件库仅限于Python语言,由于最近收到一些同学的留言说,按照网上的教程一步一步的学习,却频繁的出现报错&#xff0…

假期周进度总计(四)

本周学习利用OEM工具创建删除表以及对表内数据进行增删改查的操作 一切均通过此工具进行,然后还学到了用SQL *Plus进行相应操作 本周每天4.5个小时,出现的错误就是点击的误操作,可以改正,下周进一步学习Oracle基本操作转载于:http…

Java集合框架(3)

Map(和Collection<E>一样都是集合框架的顶层接口) |--Hashtable:底层是哈希表数据结构&#xff0c;不可以用null对象作为键或值。它是线程同步的。 |--HashMap&#xff1a;底层是哈希表。允许使用null键null值&#xff0c;该集合是不同步的&#xff0c;效率高&#xff0c…

php函数从数组中取出指定的数目,PHP数组函数

1.array_rand()从数组中随机取出一个或多个元素(返回值是&#xff1a;随机元素的键)$arr[js,css,25,php,30];printf(%s,print_r($arr,true));//随机去2个元素$resarray_rand($arr,2);printf(%s,print_r($res,true));2.array_replace()使用后面数组元素相同 key 的值替换 array1…

存储过程 not supported yet_让我们来看看+Redis如何存储和计算一亿用户的活跃度

1前段时间&#xff0c;在网上看到一道面试题&#xff1a;如何用redis存储统计1亿用户一年的登陆情况&#xff0c;并快速检索任意时间窗口内的活跃用户数量。觉得很有意思&#xff0c;就仔细想了下 。并做了一系列实验&#xff0c;自己模拟了下 。还是有点收获的&#xff0c;现整…

HBase查询优化

1.概述 HBase是一个实时的非关系型数据库&#xff0c;用来存储海量数据。但是&#xff0c;在实际使用场景中&#xff0c;在使用HBase API查询HBase中的数据时&#xff0c;有时会发现数据查询会很慢。本篇博客将从客户端优化和服务端优化两个方面来介绍&#xff0c;如何提高查询…

全国计算机等级考试题库二级C操作题100套(第49套)

第49套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;将形参s所指字符串中所有ASCII码值小于97 的字符存入形参t所指字符数组中&#xff0c;形成一个新串&#xff0c;并统计出符合条件的字符个数 作为函数值返回。 例如&#xff0c;形参s所指的字符串为&…

NEC SV8100电话交换机配置梓博电话计费系统

为了节约办公成本&#xff0c;规范电话使用。公司最近为NEC SV8100电话交换机系统上线了一套梓博的电话计费系统。先将配置过程分享给各位。 1、登录电话交换机系统&#xff08;默认用户名tech、密码12345678&#xff09; 2、点击系统数据配置按钮 2、通过10-01选项调整电话交换…

判断闰年 php,PHP怎么判断一年是否为闰年?

判断是否为闰年的条件是满足下列二者条件之一&#xff1a;年号能被4整除、但不能被100整除&#xff0c;二是年号能被4整除&#xff0c;又能被400整除。那么PHP怎么判断一年是否为闰年&#xff1f;下面本篇文章就来给大家介绍一下使用PHP判断一年是否为闰年的方法&#xff0c;希…

redis desktop manager_面试官:Redis分布式锁如何解决锁超时问题?

Java面试笔试面经、Java技术每天学习一点Java面试关注不迷路作者&#xff1a;wangzaiplus来源&#xff1a;https://www.jianshu.com/u/8cb4591440ca一、前言关于redis分布式锁, 查了很多资料, 发现很多只是实现了最基础的功能, 但是, 并没有解决当锁已超时而业务逻辑还未执行完…

全国计算机等级考试题库二级C操作题100套(第50套)

第50套&#xff1a; 给定程序中&#xff0c;函数fun的功能是:有NN矩阵&#xff0c;以主对角线为对称线&#xff0c;对称元素相加并将结果存放在左下三角元素中&#xff0c;右上三角元素置为0。例如&#xff0c;若N3&#xff0c;有下列矩阵&#xff1a; 1 2 3 4 5 6 7 8 9 计算…

《CLR via C#》读书笔记 之 参数

第九章 参数 2013-02-27 9.3 以传引用的方式向方法传递参数 默认情况下&#xff0c;CLR假定所有方法参数都是传值的。当传递引用类型的对象时&#xff0c;也默认是传值的&#xff0c;只不过这个值是引用&#xff08;指针&#xff09;本身。 CLR允许以传引用的方式传递参数。在C…

学习笔记整理之模式化方法

第一步 要分清要用那个不变的参数去实现 &#xff08;比如我现在要用 ID进行验证 则&#xff0c;验证完毕后实现的抽象方法的参数是 操作数&#xff0c;所以操作 的方法的参数是操作数&#xff09;先new 个要实现的方法比如 New StudentManger(id,name) 此方法要把继承的抽象的…