今天面试php遇到几个小问题不会,请大家帮小弟我看看
今天面试php遇到几个问题不会,请大家帮我看看
1.网站服务器想判断某个用户在网上的行为记录以及下次该用户再次登陆的时候就能判断出是上次登陆的用户,这个是用cookie来判断好,还是用session好? 为什么? 还有一个问题,服务器如何判断某个行为是A用户的还是B用户的行为。(对cookie和session网上虽然有很多解释,但我一直没有100%搞明白这个问题,估计下次面试也会遇到,该怎么理解呢?)
2.某个账号登陆之后如何防止这个账号在其他地方再次登陆,就比如QQ的某个账号登陆了,但在其他地方想再用这个账号登陆,php是如何判断并且阻止的?
3.某个表里的数据起初很少,但是因为业务的关系,数据量猛增(几千万条或者更多),这时该怎么设计这个表,该如何优化?
------解决方案--------------------
1.cookie好。用Session挂在服务器上匹配数据。相当于查数据库了
2。可以在数据库里设置字段 is_login 登陆判断为1 未登陆为0 如果已经为1 再次登陆就判断已经登陆
3.只想到索引。这个是必须的
新手言论。勿喷
------解决方案--------------------
楼主问题目前没有统一答案。
1。大网站用cookie,安全性用session. 虽然session也可以设有效期,但对于有效期的问题,一般更喜欢用cookie.
服务器如何判断某个行为是A用户的还是B用户. 这个是身份识别。可以从cookie或session中取,或生成user对象。
2.这个无法解决。只能是设数据库标识。is_login 登陆判断为1 。 但问题在于,何时清除这个标识。---》高手解答。
3. 简单地就是索引,但索引也没有效率时。可以分表和分区。 具体的只有看你查询需求,测试后才知道。
------解决方案--------------------
1.cookie 最好的方式还是 cookie+session 至于区别之类的 你还是得仔细的看看一些教程,很多就不重复在这粘贴了。
2.使用memchace+mysql来解决,轻松easy...
3.很笼统....这个有很多情况发生 所以 我觉得还是要根据实际的情况来处理.
例如我们可以先观察 mysql-slow.log ...
数据量很多的时候第一个考虑的可能就是分表了...
------解决方案--------------------
面试啊....这么回答:
才几千万啊,我上个公司那里几亿都没当回事.....你们公司的DBA不行......
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
应该是memcache过期时间设置来清除mysql中的is_login信息,再通过一些onbeforeunload之类的辅助吧。
------解决方案--------------------
------解决方案--------------------
【3.某个表里的数据起初很少,但是因为业务的关系,数据量猛增(几千万条或者更多),这时该怎么设计这个表,该如何优化?】
你就说有什么关系啊,就一张表,csdn 600万的纪录都在一张表里,被导出了
------解决方案--------------------
我也想知道第二个问题的答案,因为非人为正常点击退出(比如关闭浏览器、非正常关机)这种情况发生的时候,如果用is_login这种方式来判断的话,就会失效。如果是定期清除的话,也会有问题,就是出现非正常退出的时候由于没有及时处理is_login导致登陆不上
------解决方案--------------------
第二个问题和统计在线人数是同一个道理
------解决方案--------------------
第二個问题 可能更多的是用到 socket.io
做可能会更好一点.及时判断.
因为php不能很精确的确定是否在线.
还有一种方案就是php方案
设置这个在线用户多少分钟内没有做操作,我就判定他已经退出.(每次点击一个事件就是一次更新 online_time)
而且如果有后来者登录的话,你不是去阻止,而是让他登录上去,然后提示之前登录的账户 你的账户在其他地方登录了.
第一个问题呢:个人建议还是偏向session 比较安全.
第三个问题就是:如果应许的话重新设计表...或许这是更好的方法.
如果不行的话.最好是看具体情况...不过考你应该是优化和分表.
------解决方案--------------------
关于第二个问题,是不是可以理解为单点登录呢?
------解决方案--------------------

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

PHP成为许多网站首选技术栈的原因包括其易用性、强大社区支持和广泛应用。1)易于学习和使用,适合初学者。2)拥有庞大的开发者社区,资源丰富。3)广泛应用于WordPress、Drupal等平台。4)与Web服务器紧密集成,简化开发部署。

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。
