golang是否也可以像php一样 在任何地方可以区分是 web模式 还是cli模式?

fenglangjuxu · 2020-08-27 11:49:15 · 1183 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-08-27 11:49:15 的主题,其中的信息可能已经有所发展或是发生改变。

php可以通过这个实现
需要用到系统函数php_sapi_name() 或者 系统常量 PHP_SAPI,返回 cli 或 cli_server

golang可以么? 假设有如下场景

a方法 是去请求一个网址 有个超时时间
如果是用户api调用 超时时间就设置短点
如果是后台crontab或者命令行调用 就设置长点
当然从调用源头是可以区分的,但是麻烦.
比如a这个方法,可能是e调用d,d调用c,c调用b,b才调用a,就是链路比较长,不想吧这个标识从源头一路传下来.
就想在a这个方式实时获取.

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1183 次点击  ∙  1 赞  
加入收藏 微博
4 回复  |  直到 2020-08-29 07:36:52
zhushiqiang
zhushiqiang · #1 · 5年之前

通过浏览器标识区分?

fenglangjuxu
fenglangjuxu · #2 · 5年之前
zhushiqiangzhushiqiang #1 回复

通过浏览器标识区分?

你这可能没理解题意

phlv
phlv · #3 · 5年之前

php是脚本语言,可以通过 php-fpm 方式运行,也可以通过 cli 模式运行。

而 golang 是编译型语言,是先将源码编译成二级制文件,然后再命令行模式下执行,所以 golang 只有一种执行方式:命令行下执行二进制文件。 如果一个二进制 goalng 程序可以执行不同的命令,比如:

gin start web
gin start work
gin start crontab

那么就可以以在不通的入口处设置全局环境变量来标明是执行的哪个动作。然后根据不同的动作做不同的配置。

fenglangjuxu
fenglangjuxu · #4 · 5年之前
phlvphlv #3 回复

php是脚本语言,可以通过 php-fpm 方式运行,也可以通过 cli 模式运行。 而 golang 是编译型语言,是先将源码编译成二级制文件,然后再命令行模式下执行,所以 golang 只有一种执行方式:命令行下执行二进制文件。 如果一个二进制 goalng 程序可以执行不同的命令,比如: ``` gin start web ``` ``` gin start work ``` ``` gin start crontab ``` 那么就可以以在不通的入口处设置全局环境变量来标明是执行的哪个动作。然后根据不同的动作做不同的配置。

谢谢了 我试下 在编译的时候 加上参数

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传