素材牛VIP会员
今天面试PHP遇到的问题,有人能给解答一下吗?
 谎***y  分类:PHP代码  人气:2165  回帖:14  发布于6年前 收藏

今天面试,遇到个场景问题,说两个人去吃饭,二维码扫一扫点单,他们俩一同扫出一个菜单页面,两个人的点单行为双方都能看到,并且相互影响,点单结束后一个人确认,两个人的菜单同时合并提交,请问,以上用了哪些技术。
有人能知道这道题的答案吗,刚工作一年的菜鸟,今天被问的一脸懵逼。

 标签:htmlphp

讨论这个帖子(14)垃圾回帖将一律封号处理……

Lv5 码农
野***7 CEO 6年前#1

我感觉要用到websocket,貌似只知道websocket能在自己的手机页面看到进入这个页面(房间)其他人操作,相互影响通过程序处理,不知道还考了什么

Lv2 入门
多***哈 JS工程师 6年前#2

这种题目没有标准答案!只要能够实现这种效果的就可以。
比如说websocket。

1.扫码的行为就是进入一个房间号,两个人之间的就是基于ws交互,数据可以存储在redis中,最后合并之后提交,存数据库操作。

也可以使用轮询

2.也可以是轮询操作,也是可以实现这种效果,只不过websocket的时效性更好。

队列也是一样的。

Lv7 码师
ha***23 职业无 6年前#3

websocket

Lv4 码徒
宁***远 JS工程师 6年前#4

数据存储在服务器,处理了同样的数据

Lv4 码徒
23***om JS工程师 6年前#5

ajax+php

使用过二维火,
一张桌子一个id,二维码就是一个连接,比如http://www.aaa.com/?id=1
扫描二维码就相当于打开一个网页。

点击一个菜品加入购物车,就是用ajax提交菜品id,

当时使用的时候就测试过,我把一个菜品加入购物车,另一个扫描的朋友不会显示菜品已加入购物车,除非刷新页面
所以应该没有用到websocket,消息队列这种高级的东西。

只是刷新页面的时候后端读取购物车菜品,并显示页面而已。

所以二维码点单看上去很高级,其实很简单

Lv2 入门
阿***逗 移动开发工程师 6年前#6

用了Ajax异步 或者用swoole,还要redis或者memcached免得数据库压力过大,

Lv5 码农
邵***大 移动开发工程师 6年前#7

AMQP相关

Lv6 码匠
明***e 交互设计师 6年前#8

首先,二维码有个固定的标识,各自提交数据的时候,先提到数据库临时表,与二维码固定标识关联,当一个人提交的时候,数据存入正式表,同时删除临时表数据.

Lv2 入门
多***哈 JS工程师 6年前#9

使用redis的发布与订阅也是一种方案,顾客作为相应桌子的发布方,服务器订阅每一个桌子的消息,楼上的websocket的方案更好吧

Lv5 码农
雨***啊 产品经理 6年前#10
用websocket 是没有问题的,我觉得可以用swoole 的websocket 两个客户端同时操作,相互影响,应该符合您说的应用场景
上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取