@tasy5kg,噢,你是说会不会导致老虎林变卡是吧?
我也不知道老虎林可以承载多少并发,这需要你问问老虎了
@tasy5kg,老虎林的大开销,应该是图片和附件吧
瞅了瞅
https://hu60.cn/q.php/bbs.topic.103545.24.json?pageSize=1
,大概1.7 KB
就算
2 KB
,看一次上次你那张10 MB
的GIF
,相当于你5000日活了
@tasy5kg,这个 24 楼,不会就是你用来检查最新版本号的吧
用途是啥啊?旧安卓可行不
@弟妹,我觉得,你的
nodejs
应该只是提供了普通stdin
,加上你又没用bash -i
参数,所以启动的bash
应该不是交互式的这时你用 10 楼的代码,
alias
应该就能生效了
@弟妹,
因为机器没网,电脑里没有这个软件。所以就没采用这个。。。
Emm..?不需要额外安装啥软件呀,只是加一行
bash
代码然后,我是拿python2.7测试--version输出到错误流的(我还没测试其他机器的2.7是否也这样)
我不熟悉
Python 2
,我电脑也没装,那就不清楚了
@弟妹,
噢,我看漏了这一句
并开启交互式shell
看来,你读了 7 楼的
只是,这
nodejs
代码里,哪一行是代表连接到了tty
吗?(我不熟悉nodejs
,但我还是能看得懂很多js
的,即使是到ES2022
)
@弟妹,
PS: python --version竟然输出到错误流 真离谱
我瞅了瞅,应该是输出至
stdout
的?$ python3 --version | sed 's/^/[STDOUT] /' [STDOUT] Python 3.10.5
@弟妹,看来,你没看 7 楼
await execRequest('bash',['shopt -s expand_aliases', 'alias python233=python2', 'python233 --version 2>&1'])
@弟妹,
Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt.
需要在交互式模式,或者启用
expand_aliases
,alias
才能生效
@弟妹,
Bash 总是至少读取完整的一行
读取
alias lll='ls -ll';lll
接着立即扩展别名
alias
不是别名,lll
也不是别名(你的alias lll='ls-ll'
此时还未执行),所以不用扩展最后再执行命令
- 执行
alias lll='ls -ll'
- 执行
lll
@弟妹,看来你是没看懂大意,也没看英文原文呐。。
Bash 手册里,Alias 条目说:
Bash always reads at least one complete line of input, and all lines that make up a compound command, before executing any of the commands on that line or the compound command. Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new alias.
大意:
Bash 总是至少读取完整的一行(或多行,保证复合命令也读完整咯),接着立即扩展别名,最后再执行命令
另外,你的
ls -ll
需要用引号括起来,否则-ll
不是lll
的一部分,而是成为alias
的参数。如:$ alias lll='ls -ll'
@老虎会游泳,关于图片在线压缩,我打算后端主用
PHP
+ffmpeg, avifenc, heif-enc
等外部命令主要考虑
- 感觉
PHP
像林子通用语言,方便交流,请教也更容易得到回复ffmpeg
可以读取很多格式和图像处理,命令行语法也比API
简单易懂得多。不支持的格式还可通过管道,由其它命令流式处理。大体流程设计
PHP
接到原图链接,进行安全检测:
- 链接的
host:port
是否在白名单内?(防localhost
和乱下违法文件)- 是否滥用?(有办法识别是哪个
hu60
用户的请求吗?)下载原图响应头
若存在转换后缓存(暂定总缓存
1GB
),且响应头时间和本地记录一致,则提供,然后结束若无原图缓存,或响应头时间比本地新,则下载图片,然后检测:
文件大小(下载前检测)、图片类型
宽高、像素数(防炸内存)
是否动态(
ffmpeg, dwebp
都不支持动态webp
……)转换图片,提供,结束
问题
主要流程中,哪里可能会出现被攻击的弱点吗?
『转换图片』应该由
PHP
在请求中去处理,还是提交给外部独立应用去处理(PHP
或js
轮询结果)?需要考虑『存在多个请求时,如何更有效利用服务器资源』吗?如:
不能一股脑同时转换所有图片,需要能设定
worker
数能根据优先级转换。越高的优先级,应该:
近期该用户请求更少(能服务更多用户)
图片更小(使所有用户总等待时间更少)
图片较新(近期更可能被其他用户使用)
……
@老虎会游泳,已私信(好像公开也无所谓?)
@老虎会游泳,真的吗?Debian,谢谢老虎!