php怎么设置不超时,token保存数据库里面吗?
token没必要保存数据库。Token保存时附上一个超时时间expire。比如设置7200秒后登陆无效,则登陆成功时php服务端将token和有效时间time()+7200这两个参数发送给客户端。这样只需要检查当前时间是否大于expire就能判断登陆是否还有效,不需要手动删除.
同时服务端登陆成功时设置一个有过期时间的session,这样可以通过session是否存在来决定用户的登陆信息是否还有效。
mySQL中怎么将dmp文件导入数据库?
如果您的.sql文件大小超过2M,在使用phpadmin导入时就会因为IE浏览器超时及服务器上传附件大小的限制造成导入超时失败,如果您的mySQL数据库导出后的.sql文件大于2M,建议您mysql数据表分批导出为小于2M的.sql文件,然后再依次使用phpadmin导入至服务器即可。
数据多的时候为什么要使用redis而不用mysql?
通常来说,当数据多、并发量大的时候,架构中可以引入Redis,帮助提升架构的整体性能,减少Mysql(或其他数据库)的压力,但不是使用Redis,就不用MySQL。
因为Redis的性能十分优越,可以支持每秒十几万此的读/写操作,并且它还支持持久化、集群部署、分布式、主从同步等,Redis在高并发的场景下数据的安全和一致性,所以它经常用于两个场景:
缓存经常会被查询,但是不经常被修改或者删除的数据;比如数据字典,业务数据中的热点数据;这样不仅提升查询效率,还可以减少数据库的压力;
经常被查询,实时性要求不高数据,比如网站的最新列表、排行榜之类的数据,只需要定时统计一次,然后把统计结果放到Redis中提供查询(请不要使用select top 10 from xxxx)。
缓存可以方便数据共享,比如我先用电脑网页打开X东,选了两件商品放到购物车里面,再登录手机APP,也是可以看到购物车里面的商品的。判断数据是否适合缓存到Redis中,可以从几个方面考虑:会经常查询么?命中率如何?写操作多么?数据大小?
我们经常采用这样的方式将数据刷到Redis中:查询的请求过来,现在Redis中查询,如果查询不到,就查询数据库拿到数据,再放到缓存中,这样第二次相同的查询请求过来,就可以直接在Redis中拿到数据;不过要注意【缓存穿透】的问题。
缓存的刷新会比较复杂,通常是修改完数据库之后,还需要对Redis中的数据进行操作;代码很简单,但是需要保证这两步为同一事务,或最终的事务一致性。
高速读写常见的就是计数器,比如一篇文章的阅读量,不可能每一次阅读就在数据库里面update一次。
高并发的场景很适合使用Redis,比如双11秒杀,库存一共就一千件,到了秒杀的时间,通常会在极为短暂的时间内,有数万级的请求达到服务器,如果使用数据库的话,很可能在这一瞬间造成数据库的崩溃,所以通常会使用Redis(秒杀的场景会比较复杂,Redis只是其中之一,例如如果请求超过某个数量的时候,多余的请求就会被限流)。
这种高并发的场景,是当请求达到服务器的时候,直接在Redis上读写,请求不会访问到数据库;程序会在合适的时间,比如一千件库存都被秒杀,再将数据批量写到数据库中。
所以通常来说,在必要的时候引入Redis,可以减少MySQL(或其他)数据库的压力,两者不是替代的关系。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。那么mysql数据库能共用一个吗?
你的这个想法可以实现,但这不是最优解,最好的解决办法还是准备两套虚拟主机,单独来管理。
下面我来解答一下你的这个需求应该怎么实现。
两个网站共用一个空间,并且用一个mysql
1、在你空间的根目录下新建两个文件夹,分别代表不同的项目,这里我以project1、project2分别作为两个项目的文件夹,php代码以thinkphp5作为例子来搭建。
这就好比是你空间的目录结构。
两套程序的源码也都是一样的
2、配置文件,连接mysql数据库
找到配置文件,把数据库的参数填写上,代码如下,重点就是两个数据库的表前缀一定要区分开,其他的数据库名、端口等都是一样的。
3、mysql数据库的创建
project1这个项目操作是project1_为前缀的表。
project2这个项目操作是project2_为前缀的表。
到这里就搭建好了,你解析域名到你的空间别名或者IP就可以访问这两个项目了。
注
项目1的访问地址:域名/project1/public/index.php
项目2的访问地址:域名/project2/public/index.php
具体访问地址以你的程序为准,这里我是以thinkphp5作为例子演示,不作为唯一标准。
希望我的回答能帮助到你!
欢迎点赞、关注、评论交流,谢谢!
我是李子,专注分享html、css、jquery、php等基础语言课程!
Timeout是什么意思?
情况一:由于nginx默认的fastcgi进程响应缓冲区太小造成: 这种情况下导致fastcgi进程被挂起,如果fastcgi服务队这个挂起处理不是很好的话,就可能提示“504 Gateway Time-out”错误。 情况一解决办法: 默认的fastcgi进程响应的缓冲区是8K,可以设置大一点,在nginx.conf里,加入:fastcgi_buffers 8 128k 这表示设置fastcgi缓冲区为8块128k大小的空间。 情况一解决办法(改进): 在上述方法修改后,如果还是出现问题,可以继续修改nginx的超时参数,将参数调大一点,如设置为60秒: send_timeout 60; 经过这两个参数的调整,结果没有再提示“504 Gateway Time-out”错误,说明效果还是挺不错的,问题基本解决。 情况二:PHP环境的配置问题 这里需要对php-fpm和nginx进行配置修改。因为这种情况下,也会出现“504 Gateway Time-out”错误提示。 情况二解决办法( php-fpm配置修改): 将max_children由之前的10改为30,这样操作是为了保证有充足的php-cgi进程可以被使用。 将request_terminate_timeout由之前的0秒改成60秒,这样使php-cgi进程处理脚本的超时时间提高到60秒,可以防止进程被挂起以提高利用效率。 情况二解决办法(nginx配置修改): 为了减少fastcgi的请求次数,尽量维持buffers不变,要更改nginx的几个配置项,如下: 将fastcgi_buffers由4 64k改为2 256k; 将fastcgi_buffer_size 由64k改为128k; 将fastcgi_busy_buffers_size由128k改为256k; 将fastcgi_temp_file_write_size由128k改成256k。 情况二解决办法修改完,需要重新加载php-fpm和nginx的配置,然后再进行测试。之后就没有发现“504 Gateway Time-out”错误,效果也还是不错的。