1
FYK 2018-05-14 16:12:43 +08:00
...所以我从你的描述中没有明确感受到是 php 成为了瓶颈。
|
2
widdy 2018-05-14 16:12:49 +08:00
先使用回复接口回复个稍等,然后使用客服接口发海报回去!
|
3
c466934322 OP @FYK 我标题的意思是说我用了 php 这个语言的技术,并不是说 php 成为了瓶颈,不要断章取义。我写 php 的目的是希望对 php 感兴趣的人才帮忙解答一下。
|
4
1010011010 2018-05-14 16:23:27 +08:00
我记得 gd 库某些功能很慢
可能是处理图片占大头 |
5
lookwi 2018-05-14 16:24:24 +08:00 via iPhone
换图片处理 imagick
|
6
tulongtou 2018-05-14 16:24:47 +08:00 via iPhone
上 php7.2 啊
|
7
c466934322 OP @FYK 我这种渣渣水平真的不敢说那个语言有瓶颈,只能说我还在努力想说这句话中。谢谢
|
8
ibaoka 2018-05-14 16:30:29 +08:00
速度慢的瓶颈也许是在获取微信头像上,不要用 file_get_content,用 curl,会有惊喜。
|
9
zhouxuchen 2018-05-14 16:30:39 +08:00
一个曲线救国的方案,如果背景图是固定的,可以用第三方对象存储的水印接口完成。这样只要生成二维码后上传到 CDN,把带着打水印参数的背景图地址直接返回给前端就行了。
|
10
KIDJourney 2018-05-14 16:30:42 +08:00
说了这么多你还是不知道慢在哪,多打点 metrics。看一下瓶颈在哪。
|
11
kslr 2018-05-14 16:35:35 +08:00
拼图还是要自己写,我之前做过和你的业务一样,基本卡在拼图。
|
12
kslr 2018-05-14 16:36:24 +08:00
不过,如果你只有一张拼图的话,还是打点吧 不可能这么慢的,网络 IOCPU 看看是哪一个。
|
13
simapple 2018-05-14 16:38:34 +08:00
异步操作了吗?
|
14
learnshare 2018-05-14 16:43:54 +08:00 via Android
之前做的方案是写成页面,用 headless 浏览器截图,这样生成的图像更加细致可控
|
15
h1367500190 2018-05-14 17:01:37 +08:00
是实话到底是哪一步慢啊,看得我急死了
|
16
tanszhe 2018-05-14 17:12:23 +08:00
|
17
w516322644 2018-05-14 17:57:14 +08:00
这个查下慢的原因在哪,
我查过是用 file_get_contents 获得微信图片很慢,用 curl 获得就很快。 |
18
dilu 2018-05-14 18:09:17 +08:00
先分析 MySQL 慢查询日志,看看是不是数据库出现了瓶颈,在看 PHP-FPM 的慢日志,看是不是脚本出了问题,最后看 Nginx 日志,再判断是不是网络延迟的问题,总要先确定问题出在哪才能动手去解决
还有,只要你把 PHP 从 5 换成 7,就能获得最少 30%性能的提升 |
19
FYK 2018-05-14 20:38:19 +08:00
@c466934322 不好意思,可能让你产生了误会。我的本意是同:
#10 #15 #17 #18 他们的说法。 你遇到了这个问题,但是完全没有相应有用的错误提示之类的信息。我说的错误提示,如 #18 所述类似,你是否自己对这相关对方面进行了分析了?如果有更多的信息,可以帮助大家更有方向性地对你对这个问题进行分析。 除了以上的解释,我说明一下我为什么会留下这个评论 :「...所以我从你的描述中没有明确感受到是 php 成为了瓶颈。」: 你的标题是 「使用 PHP 生成微信海报速度过慢」。那当我看到标题的时候,我觉得是和 PHP 强相关的,是由 PHP 导致的。当我进来的时候,我潜意识的应该是觉得可能会获得这样的信息:「你通过别的语言或者其他什么方式进行了这种操作都没有问题,但是现在由于某种原因,你要用 PHP,而 PHP 得到的结果并不理想」。实际我看到的是: 1. 你描述了一下你的程序逻辑 2. 配上了服务器的配置 3. 最后提出了具体的问题。 我个人感觉从你的帖子内容中,感受到的是和 PHP 没有那么强相关的。就你的内容而言,网络,数据库或其他方面都可能产生问题。而你并没有说你定位到问题是在哪里,另外我认为从你的描述中,也可能存在问题并不出在 PHP 的情况。 我觉得以上对你在 #3 的回复是有足够程度的解释的。 另外,对你 #7 的回复 「我这种渣渣水平真的不敢说那个语言有瓶颈,只能说我还在努力想说这句话中。谢谢」。 对该回复,我理解为「你觉得你的 PHP 水平没有达到你自觉可以满意的某种程度」,嗯,我也这么评价自己。「不敢说那个语言有瓶颈」,这个吧,我觉得每种语言都不是万能,都有擅长做的方面,以及可以做但是不擅长的方面,「敢不敢说」就是你对该种语言对认知程度,比如即使我对某种语言没有深入学习,但是我有了解过它的擅长和不擅长的地方,那么在评论像你这个帖子的这种情况的时候,我觉得我是可以说 「这种语言在某些方面有局限性,而在这种局限下进行开发,这种语言可能就会成为程序的瓶颈」。 希望你不嫌弃我这冗长的回复。 在此,再次对让你产生误解表示歉意。 |
20
eve1yb0dy 2018-05-14 20:54:54 +08:00
打 log 看哪里慢...
|
21
flyingghost 2018-05-15 11:20:18 +08:00
1234 里都没看出有什么动态内容。
那就为每个用户提前生成啊。 |
22
moonsola 2018-05-15 11:28:07 +08:00
进来之前,以为是 php 合成图片慢;
进来之后,发现楼主还没定位到具体是哪里慢 |
23
vlrog 2018-05-15 13:49:46 +08:00
应该不是 PHP 的问题,很可能是获取微信二维码和调用客服接口比较费时
|
24
simapple 2018-05-15 14:38:00 +08:00
@tanszhe 看清楚,他要做的这些都可以异步实现。
@c466934322 用 swoole 将这个任务拆分成异步的,然后返回 success 给微信,生成好图片上传后,用客服接口推给微信。使用 cgi 进程同步执行 只要用户集中操作就会阻塞,微信在服务器返回超时,还会执行重试,让进程更加忙碌。所以你把这个处理操作 都弄成异步的,就 ok 了 |
25
han8gui 2018-06-08 17:29:54 +08:00
之前做过类似的功能,1s 之类就搞定了。
没看出你的瓶颈在哪? |
26
Rootrl 2018-08-01 01:01:32 +08:00
最后放在客户端生成,canvas
|