开发者社区> 问答> 正文

用PHP+mysql实现下面问题中的功能?

功能描述如下:1000个用户向本服务器提交共1000个数据(有可能他们是同时提交数据),我想将这1000个数据存到数据库的一张表里,但是我想通过时间先后的顺序将这1000问题排序,但是有可能有很多数据拥有相同的时间标签,那服务器会怎么排序插入数据库??
第二问题:假设这一千个数据全部排序成功,又有1000个用户要来获取这1000个数据,他们的请求又有可能是同一时间点发出的请求,但是我们必须要安排第一个请求的人得到第一个数据,也是按时间先后分配,那服务器要怎样处理这些同时发来的请求?也就遇到很多并列第一的请求??

展开
收起
落地花开啦 2016-02-22 11:53:18 2117 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    第一个比较好解决,业务部分不考虑并发和排序,在表中有2个字段,id(对于mysql用自增,对于oracle用sequence),另一个timestamp记录时间,但是要是原子性事务保证。排序的时候用 order by timestamp,id 就可以了。
    第二个,php不提供线程、并发控制和锁、CAS原子量,mysql没有实现sequence等等,所以你这个方案暂时看很难实现。
    另外,“同时”“并列”这些概念是不对的,只要时间片足够小,先后顺序是一定存在的。
    即使并发很大,竞争很激烈,但只有一个能够获得锁,所以看起来“同时”的东西,会变成锁机制下的硬性排序。

    2019-07-17 18:46:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载

相关镜像