问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用workerman处理后台耗时操作

发布网友 发布时间:2022-04-07 07:29

我来回答

2个回答

懂视网 时间:2022-04-07 11:51

这样的格式执行。于是修改index.php文件绑定路由

// [ 应用入口文件 ]
namespace think;

// 加载基础文件
require __DIR__ . '/../thinkphp/base.php';

// 支持事先使用静态方法设置Request对象和Config对象

// 执行应用并响应
Container::get('app')->bind("workerman/index")->run()->send();

直接运行php index.php start,汗,居然提示说找不到start该模型。特么tp5把start作为路由解析了。那怎么办,workerman的需要使用start的方式执行,tp5却要把该参数解析成模型啊。

后查阅资料发现,Thinkphp5.1本身就整合了workerman了。可以使用thinkphp5的方式安装workerman,那样就可以使用thinkphp的运行方式运行了。

执行命令改成:

php think worker

后续发现Thinkphp5.1整合的workerman封装的有点麻烦,不好用,而且如果你想用PHPSocketIO之类的workerman服务用整合的方式很麻烦。

workerman把第一个参数作为操作服务的命令,那我把它改成用第二个参数作为操作命令行不行?

果然就是这么做的。查找workerman插件里面的parseCommand()函数。这个鬼函数就是获取那个操作命令的,把:

argv[1]改成argv[2],argv[2]改成argv[2]改成argv[2]改成argv[3]

 protected static function parseCommand()
 {
 if (static::$_OS !== OS_TYPE_LINUX) {
  return;
 }
 global $argv;
 // Check argv;
 $start_file = $argv[0];
 $available_commands = array(
  'start',
  'stop',
  'restart',
  'reload',
  'status',
  'connections',
 );
 $usage = "Usage: php yourfile <command> 
 [mode]
Commands: 
start		Start worker in DEBUG mode.
		Use mode -d to start in DAEMON mode.
stop		Stop worker.
		Use mode -g to stop gracefully.
restart		Restart workers.
		Use mode -d to start in DAEMON mode.
		Use mode -g to stop gracefully.
reload		Reload codes.
		Use mode -g to reload gracefully.
status		Get worker status.
		Use mode -d to show live status.
connections	Get worker connections.
";
 if (!isset($argv[2]) || !in_array($argv[2], $available_commands)) {
  if (isset($argv[2])) {
  static::safeEcho('Unknown command: ' . $argv[2] . "
");
  }
  exit($usage);
 }

 // Get command.
 $command = trim($argv[2]);
 $command2 = isset($argv[3]) ? $argv[3] : '';

执行命令改成

php server.php index start

(第一个参数用于Thinkphp解析路由,第二个参数用于workerman解析操作服务命令)

更多workerman知识请关注PHP中文网workerman框架教程栏目。

热心网友 时间:2022-04-07 08:59

在应用中经常会用到一些费时的操作,需要用户进行等待,比如加载网页内容,下载需要的资源等等,这时候就需要一个提示来告诉用户程序正在执行,并没有假死或者真死,比如一个圆形进度条,它就好像在告诉用户:看,我还能转,我还没死呢,不要关闭我!而ProgressBar、ProgressDialog等控件就是专门用来干这个的。
以ProgressDialog为例,一般的使用它步骤为:在执行耗时间的操作之前弹出ProgressDialog提示用户,然后开一个新线程,在新线程里执行耗时的操作,执行完毕之后通知主程序将ProgressDialog结束。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
40岁还能学医吗 40岁了想学医有什么途径 中年怎么学医 48岁还能学医吗 子宫内膜薄厚能影响怀孕吗 排卵期内膜9mm可以怀孕吗 女生用笔记本推荐。要好看的。 48核电脑有哪些显卡有核心数的概念吗Intel的48核显卡怎么样 求笔记本推荐 上海 游戏玩家 在微商买东西,可以填菜鸟驿站的地址吗?如果可以,东西到了怎么去取?_百... 水龙头断掉了怎么办 水龙头被我掰断了,现在卡在墙里面,要怎么才能弄出来 水龙头接头处锈断掉了,里面那一节怎么弄出来? 水龙头出水口接口断了应该怎么办? 洗衣机水龙头出水口断了,有一截卡在水管里头,怎么才能取出来? 水龙头的头断在管里面要怎么才能把它给弄出来? 水龙头断在接头里怎么能拧出来 特岗教师的报名条件 蛋白质溶液中加入乙酸铅等重金属盐溶液 醋酸铅是有机物吗?会破坏蛋白质吗?醋酸盐是不是都是有机物? 重金属盐类杀生剂有哪些 关于重金属盐(化学) 蛋白质加入乙酸铅溶液生成什么颜色的沉淀 醋酸铅属什么性质 在蛋白质溶液中加入硫酸钠和加入乙酸铅生成沉淀有什么不同 三氯乙酸和乙酸铅沉淀蛋白质的原理是 哪些是重金属盐?怎样区分它是不是重金属盐? 重金属盐的中毒原因 误服乙酸铅碳酸钡等重金属盐时为什么及时服用大量的牛乳或蛋清可起到解毒作用? 乙酸铅是盐还是酸 有没有什么好用简单的可以做海报的工具? 苹果开机突然卡住了怎么办死机了怎么办 求助老大,我用workerman的GatewayWorker做推送服务器时的问题 请问word2007,如何设置图片位置:水平距页面5厘米,垂直距页面6厘米。 word中插入图片,然后设置图片与页面水平距离5厘米,垂直距离6厘米 word2010中将图片位置设为水平距页面右侧13厘米,垂直距段落下侧6厘米,怎么做 Dreamweaver CS6调整图片边距在哪? 请问dreamweaver cs6中 属性面板中 图形的 水平边距和垂直边距在哪里可以找到或者设置到属性面板中来? Dreamweaver cs6.0 怎么对插入的图片进行左对齐右对齐 垂直水平边距设置!着急啊。在线坐等啊! 网页设计中怎么把最右下方的图片垂直上移 网页制作中列表项图片(list-style-image)如何垂直居中? 图片相对页边距怎么弄? 如何取消网页中表格、图片垂直边距? word中:将图片文件插入到文档中,要求:位于页面的(8,6)厘米处. 怎么做啊? Word中组合图形距页面右侧12厘米,垂直段落下侧2厘米怎么设置 疫情期未依法履行监督检查职责该怎么处罚 中国移动I PHONE MMS如何设定 关于I phone的问题望高手近来解答下 i phone手机都有什么功能? 隐瞒疫情是否构成犯罪