非常驻进程的 php 页面,需要等待某个消息的返回。 让 fpm 一直等么。
嗯,不太想用 ajax 轮询的方式。
1
killerv 2018-01-23 16:49:36 +08:00
websocket ?
|
2
NjcyNzMzNDQ3 2018-01-23 17:13:52 +08:00
workerman 有现成的基于 websocket
|
3
sszxcss 2018-01-23 17:17:36 +08:00
workerman 或者 swoole
|
4
b821025551b 2018-01-23 17:19:28 +08:00
swoole 吧,貌似以后要官方集成了。
|
5
gclove 2018-01-23 17:33:24 +08:00
从道理上说,你不用守护进程还能怎么实现
要实现这个必须要有守护进程,要么只能轮询 你可以不用 PHP 实现 |
6
enenaaa OP @gclove 有点好奇,非驻留进程的 php 页面怎么对接复杂的业务流程。
比如百度搜索这样。前端 php 运行在 hhvm 内,要等待后端的完成消息, 看他没用 ajax, 不知道是否也是类似 workerman 的常驻机制。 |
7
fcten 2018-01-23 18:27:06 +08:00
指定一个回调地址,当消息返回时调用该地址即可。
很多 web 端的异步处理,例如调用支付宝进行支付,都是这么做的。 |
8
gclove 2018-01-23 18:32:07 +08:00
@enenaaa 不太明白你说的
你说展示搜索页面的 php 没用 ajax ? 搜索界面在浏览器里, 肯定有通过 ajax 获取关键词推荐 和 结果啊 另外 ajax 只是一种 http 下的一种交互方式,也有其它 RPC 的实现。 可以自己设计 搜索服务提供者 肯定是 java 写的吧 |
9
aksoft 2018-01-24 09:18:34 +08:00
golang 欢迎你
|
10
enenaaa OP @gclove
对链接 https://www.baidu.com/s?wd=%E6%B0%B4%E9%80%86 抓包。 里面第一个 http 请求就返回搜索结果了的。 也就是说,浏览器对前端 php 的请求返回时,php 已经从“消息队列”里得到了业务后端的结果。这样的话,浏览器->php->业务后端->php->浏览器, 这个流程里 php 需要等待业务后端的消息。 我好奇的就是它怎么等的? |
12
gclove 2018-01-24 11:05:55 +08:00
@enenaaa 你这个想法是不对的, 这个可以理解成普通的 url 传参请求。
这里不需要消息队列,你可以理解成成 php 去请求别的 API 数据后输出结果的过程 另外光学一种语言是不行的,大部分前端都会基本使用 php |