精华内容
下载资源
问答
  • php如何设置过期时间

    2021-03-23 19:08:02
    php设置过期时间的方法:首先设置session并读取session;然后通过“unset($_SESSION[$name]);”清除session;最后输出“session::get('test');”已过期即可。严格设置php中session过期时间!严格限制session在30分钟...

    php设置过期时间的方法:首先设置session并读取session;然后通过“unset($_SESSION[$name]);”清除session;最后输出“session::get('test');”已过期即可。

    98bcdc61c2c0401b8a3cf7ec4a1b9e0d.png

    严格设置php中session过期时间!

    严格限制session在30分钟后过期!

    1.设置客户端cookie的lifetime为30分钟;

    2.设置session的最大存活周期也为30分钟;

    3.为每个session值加入时间戳,然后在程序调用时进行判断;

    至于为什么,我们首先来了解下PHP中session的基本原理:

    php中的session有效期默认是1440秒(24分钟),也就是说,客户端超过24分钟没有刷新,当前session就会失效。当然如果用户关闭了浏览器,会话也就结束了,Session自然也不存在了!

    大家知道,Session储存在服务器端,根据客户端提供的SessionID来得到这个用户的文件,然后读取文件,取得变量的值,SessionID可以使用客户端的Cookie或者Http1.1协议的

    Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……

    要控制Session的生命周期,首先我们需要了解一下php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分):

    1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递;

    2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值是“PHPSESSID”;

    3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用!

    4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!

    还有很多的设置,不过和本文相关的就是这些了,下面开始讲如何设置Session的存活周期。

    前面说过,服务器通过SessionID来读取Session的数据,但是一般浏览器传送的SessionID在浏览器关闭后就没有了,那么我们只需要人为的设置SessionID并且保存下来,不就可以……

    如果你拥有服务器的操作权限,那么设置这个非常非常的简单,只是需要进行如下的步骤:

    1、把“session.use_cookies”设置为1,使用Cookie来储存SessionID,不过默认就是1,一般不用修改;

    2、把“session.cookie_lifetime”改为你需要设置的时间(比如一个小时,就可以设置为3600,以秒为单位);

    3、把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的时间;

    在PHP的文档中明确指出,设定session有效期的参数是session.gc_maxlifetime。可以在php.ini文件中,或者通过ini_set()函数来修改这一参数。问题在于,经过多次测试,修改这个

    参数基本不起作用,session有效期仍然保持24分钟的默认值。

    由于PHP的工作机制,它并没有一个daemon线程,来定时地扫描session信息并判断其是否失效。当一个有效请求发生时,PHP会根据全局变量

    session.gc_probability/session.gc_divisor(同样可以通过php.ini或者ini_set()函数来修改)的值,来决定是否启动一个GC(Garbage Collector)。

    默认情况下,session.gc_probability = 1,session.gc_divisor =100,也就是说有1%的可能性会启动GC。GC的工作,就是扫描所有的session信息,用当前时间减去session的最后修

    改时间(modified date),同session.gc_maxlifetime参数进行比较,如果生存时间已经超过gc_maxlifetime,就把该session删除。

    到此为止,工作一切正常。那为什么会发生gc_maxlifetime无效的情况呢?

    在默认情况下,session信息会以文本文件的形式,被保存在系统的临时文件目录中。在Linux下,这一路径通常为\\tmp,在 Windows下通常为C:\\Windows\\Temp。当服务器上有多个PHP应

    用时,它们会把自己的session文件都保存在同一个目录中。同样地,这些PHP应用也会按一定机率启动GC,扫描所有的session文件。

    问题在于,GC在工作时,并不会区分不同站点的session。举例言之,站点A的gc_maxlifetime设置为2小时,站点B的 gc_maxlifetime设置为默认的24分钟。当站点B的GC启动时,它会扫

    描公用的临时文件目录,把所有超过24分钟的session文件全部删除掉,而不管它们来自于站点A或B。这样,站点A的gc_maxlifetime设置就形同虚设了。

    找到问题所在,解决起来就很简单了。修改session.save_path参数,或者使用session_save_path()函数,把保存session的目录指向一个专用的目录,gc_maxlifetime参数工作正常了。

    还有一个问题就是,gc_maxlifetime只能保证session生存的最短时间,并不能够保存在超过这一时间之后session信息立即会得到删除。因为GC是按机率启动的,可能在某一个长时间内

    都没有被启动,那么大量的session在超过gc_maxlifetime以后仍然会有效。

    解决这个问题的一个方法是,把session.gc_probability/session.gc_divisor的机率提高,如果提到100%,就会彻底解决这个问题,但显然会对性能造成严重的影响。另一个方法是自己

    只使用php实现,创建一个session类,在session写入时,把过期时间也写入。读取时,根据过期时间判断是否已过期。class Session{

    /**

    * 设置session

    * @param String $name session name

    * @param Mixed $data session data

    * @param Int $expire 超时时间(秒)

    */

    public static function set($name, $data, $expire=600){

    $session_data = array();

    $session_data['data'] = $data;

    $session_data['expire'] = time()+$expire;

    $_SESSION[$name] = $session_data;

    }

    /**

    * 读取session

    * @param String $name session name

    * @return Mixed

    */

    public static function get($name){

    if(isset($_SESSION[$name])){

    if($_SESSION[$name]['expire']>time()){

    return $_SESSION[$name]['data'];

    }else{

    self::clear($name);

    }

    }

    return false;

    }

    /**

    * 清除session

    * @param String $name session name

    */

    private static function clear($name){

    unset($_SESSION[$name]);

    }

    }

    demo.php

    session_start();

    $data = '123456';

    session::set('test', $data, 10);

    echo session::get('test'); // 未过期,输出

    sleep(10);

    echo session::get('test'); // 已过期

    展开全文
  • 工作流activiti中任务的过期时间

    千次阅读 2021-01-26 17:28:50
    方式二:直接写时间,如下:它不能直接写正常的时间日期,无法解析。这个格式相当于一天后延后三个小时,距离格式说明下面有介绍 格式解析 R2/2015-06-04T19:25:16.828696-07:00/P1DT10S 上面的字符串通过".

    方式一:流程图中动态配置如下:

    这样通过 taskService.setVariable 来传参实现每个环节的动态时间配置

    taskService.setVariable

    这样在工作流中ACT_RU_TASK表中DUE_DATE_字段就会有时间数据

    方式二:直接写时间,如下:它不能直接写正常的时间日期,无法解析。这个格式相当于一天后延后三个小时,距离格式说明下面有介绍

    格式解析

    R2/2015-06-04T19:25:16.828696-07:00/P1DT10S

    上面的字符串通过"/"分为了三部分即:

    重复次数/开始时间/运行间隔

    重复次数

    • R - 将永远重复
    • R1 - 将重复一次
    • R231 - 将重复231次。

    开始时间

    任务第一次运行的时间。如果开始日期时间已经过去,Kala将返回一个错误。

    其中"T"用来分割日期和时间,时间后面跟着的"-07:00"表示西七区,注意"-"是连字符,不是减号。

    时区默认是0时区,可以用"Z"表示,也可以不写。

    对于我国,要使用"+08:00",表示东八区。
    上面的字符串表示 2015年6月4日,19点25分16秒828696纳秒,西七区。

    运行间隔

    运行间隔以"P"开始,和上面一样也是用"T"分割日期和时间,如P1Y2M10DT2H30M15S

    • P 开始标记
    • 1Y - 一年
    • 2M - 两个月
    • 10D - 十天
    • T - 时间和日期分的割标记
    • 2H - 两个小时
    • 30M - 三十分钟
    • 15S 十五秒钟

    例子,注意如果没有年月日,"T"也不能省略

    • P1DT1M - 一天一分钟执行一次
    • P1W - 一周执行一次
    • PT1H - 一小时执行一次
    • PT10S - 十秒执行一次

    工作流会自动转换代码为Data类型时间格式,如果解析流程图需要格式转换可以用以下代码
     

    private int findH(String dueDate){
    		int h=0;
    		try {
    			javax.xml.datatype.Duration duration=javax.xml.datatype.DatatypeFactory.newInstance().newDuration(dueDate);
    			h = duration.getHours();
    		} catch (DatatypeConfigurationException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return h;
    	}

    方式三:代码直接设置:

    每个任务都有一个字段,指示该任务的截止日期。可使用Query API可用于查询在特定日期,之前或之后到期的任务。

    (1)查询当前还没过期的任务

    List<Task> listTask = taskService.createTaskQuery().taskDueAfter(new Date()).list();

    (2)查询当前已过期的任务

    List<Task> listTask = taskService.createTaskQuery().taskDueBefore(new Date()).list();

    (3)查询某个时间点过期的的任务,例如2019-12-29 16:21:07

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    ParsePosition pos = new ParsePosition(0);
    
    List<Task> listTask = taskService.createTaskQuery().taskDueDate(formatter.parse("2021-1-26 16:21:07", pos)).list();


    (4)通过代码修改任务的过期时间

    taskService.setDueDate("taskId",new Date());

    方式四:通过TaskListener的DelegateTask来修改,监听器就不详细说明了。

     

    展开全文
  • SSL Expire ScanSSL 证书到期时间检测,使用 php 开发,需要安装 OpenSSL 扩展有啥用呢?提前提醒下,续签,防止忘记使用方法将项目 clone 到本地,然后在命令行输入php main.php /path/to/ssl/directory/示例(扫描 ...

    bf899248761379dfc98a19b2f9c7b5f5.png

    SSL Expire Scan

    SSL 证书到期时间检测,使用 php 开发,需要安装 OpenSSL 扩展

    有啥用呢?

    提前提醒下,续签,防止忘记

    使用方法

    将项目 clone 到本地,然后在命令行输入

    php main.php /path/to/ssl/directory/

    示例(扫描 Nginx 的 SSL 目录下所有证书到期时间)

    php main.php /usr/local/nginx/conf/ssl/

    也可以对指定证书的到期时间进行扫描

    php main.php /usr/local/nginx/conf/ssl/natfrp.org.crt

    可以将以下内容加入到 /etc/bashrc 以方便随时使用:

    alias sslscan='php /path/to/main.php'

    源码

    EOF;// 获取 SSL 证书到期时间function get_ssl_expire_time($file) {$cert = openssl_x509_parse(file_get_contents($file));return $cert['validTo_time_t'] ?? 0;}// 扫描目录下的所有 SSL 证书function scan_ssl_files($dir, $extensionName = "crt") {if(!file_exists($dir)) return Array();if(is_file($dir)) return Array(basename($dir) => get_ssl_expire_time($dir));$abspath = realpath($dir);$expiretime = Array();if($abspath) {  $list = scandir($dir);  foreach($list as $file) {   if($file !== "." && $file !== "..") {    $ext = pathinfo("{$dir}{$file}");    if($ext['extension'] == $extensionName) {     $expiretime["{$file}"] = get_ssl_expire_time("{$dir}{$file}");    }   }  }}return $expiretime;}// 程序开始echo $logo;echo "SSL expire time scan tool by Akkariinn";if($argv[1] == "--help" || !isset($argv[1])) {exit("Usage: php {$argv[0]} [extension name]nn");}// 参数存到变量$scanpath = $argv[1] ?? "/usr/local/nginx/conf/ssl/";$scanexts = $argv[2] ?? "crt";// 扫描 SSL 证书$exps = scan_ssl_files($scanpath, $scanexts);if(count($exps) == 0) {echo "未扫描到 SSL 证书,请检查目录是否存在,以及目录下是否有证书文件n";}// 获取最长的域名$max_length = 0;foreach($exps as $key => $value) {if(mb_strwidth($key) > $max_length) {  $max_length = mb_strwidth($key);}}// 输出内容$result = "";$line_length = 0;$time_length = 0;// 遍历数组foreach($exps as $key => $value) {$expired = "正常";$exptime = $value - time();$dateime = $value !== 0 ? date("Y-m-d H:i:s", $value) : "无效的证书";$padding = str_repeat(" ", $max_length - mb_strwidth($key));if($exptime <= 2592000 && $exptime > 0) {  $expired = "一个月内将会过期";} elseif($value == 0) {  $expired = "无效";} elseif($exptime < 0) {  $expired = "已经过期";}if(mb_strwidth($dateime) > $time_length) {  $time_length = mb_strwidth($dateime);}$padding2 = str_repeat(" ", 16 - mb_strwidth($expired));$padding3 = str_repeat(" ", 19 - mb_strwidth($dateime));$data = "| {$key}{$padding} | {$dateime}{$padding3} | {$expired}{$padding2} |";$line_length = mb_strwidth($data);$result .= $data . "n";}// 格式echo "+-" . str_repeat("-", $max_length) . "-+-" . str_repeat("-", $time_length) . "-+------------------+n";echo "| 名称" . str_repeat(" ", $max_length - 4) . " | 到期时间" . str_repeat(" ", $time_length - 8) . " | 证书状态 |n";echo "+-" . str_repeat("-", $max_length) . "-+-" . str_repeat("-", $time_length) . "-+------------------+n";echo $result;echo "+-" . str_repeat("-", $max_length) . "-+-" . str_repeat("-", $time_length) . "-+------------------+nn";

    更多更优质的资讯,请关注我,你的支持会鼓励我不断分享更多更好的优质文章。

    展开全文
  • 我试图列出数据库中所有未过期的记录。我有一个正在开发的工作列表站点,我有代码从数据库中获取所有“活动”的工作详细信息并列出。$mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There ...

    我试图列出数据库中所有未过期的记录。

    我有一个正在开发的工作列表站点,我有代码从数据库中获取所有“活动”的工作详细信息并列出。

    $mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database');

    $stmtJ = $mysql->prepare('SELECT id,jobtitle,vcref,jobtype,jobintro,closingdate FROM jobs WHERE active = 1');

    $stmtJ->execute();

    $stmtJ->store_result();

    $stmtJ->bind_result($id,$jobtitle,$vcref,$jobtype,$jobintro,$closingdate);

    $totalLiveJobs = $stmtJ->num_rows();

    输出方式如下:

    while($row = $stmtJ->fetch()) :

    echo("

    job detail here

    ");

    endwhile;

    ?>

    我还有一个“if-statement”代码段来查看作业是否已过期(即,如果expires expires是一个日期yyyy-mm-dd大于“$now”,则不应该出现。

    $expires = date('Y-m-d-H-i-s',strtotime("$closingdate 12:00:00"));

    $now = date('Y-m-d-H-i-s');

    if ($expires < $now) {

    echo ("

    Live Jobs Here

    $expires");

    } else {

    echo ("

    Job Expired

    $now");

    }

    但是,我在合并这两个任务时遇到问题,主要目标是所有尚未过期的作业都将显示在页面上,任何已过期的作业都不应显示在页面上。

    我在这里拉扯我的头发,欢迎任何帮助,任何要求进一步的细节,我会尽快回复。

    线等回答

    展开全文
  • WARNING: Your password has expired. Password change required but no TTY available.提示密码过期,设置新用户密码的过期... 执行操作后,euser用户的密码时间改为90天有效期2、查看该euser用户过期信息使用ch...
  • 背景项目组已经有个分布式锁注解(参考前文《记一次分布式锁注解化》),但是在设置锁过期时间时,需要去预估业务耗时时间,如果锁的过期时间能根据业务运行时间自动调整,那使用的就更方便了。思路思路参考了redisson...
  • 我们都知道localStorage不主动删除,永远不会销毁,那么如何设置localStorage的过期时间呢,今天我们来一起尝试一下!//封装过期控制代码function set(key,value){var curTime = new Date().getTime();localStorage....
  • 要获取cookies过期时间,请使用此简单方法。//#############PART 1#############//expiration time (a*b*c*d) $time = time()+(60*60*24*365);$timeMemo = (string)$time;//sets cookie with expiration time ...
  • 嗨,我在前端使用角度js,在后端使用带有tymon jwt库的卫星...我看到’ttl’在laravel’config / jwt.php中设置令牌的到期时间./*|--------------------------------------------------------------------------| JWT...
  • 开发过程中不需要限制账户的过期时间,所以需要进行一些设置。1 查看用户的proifle是哪个,一般是default:SELECT username,PROFILE FROM dba_users;2 查看指定概要文件(如default)的密码有效期设置:SELECT * FROM ...
  • 1、js中比较到期时间和当前时间 方式1、 //到期时间 let d2 = "2022-12-29"; //转换为标准时间"2019/12/29 23:59:59" d2 = d2.replace(/-/g, "/"); d2 = new Date(d2); //当前时间 let d1 = new Date(); ...
  • 它还允许用户执行其他功能,例如设置帐户到期日期、在到期后将密码设置为无效、显示帐户时效信息、设置密码更改之前的最小和最大天数以及设置到期警告天数。1)如何在 Linux 上检查特定用户的密码到期日期如果要检查 ...
  • Oracle的密码过期规则是用Profile来管理的,系统默认只有一个Profile...所以我们新建一个profile,修改该profile的过期规则为无限期,在让某个用户适用于该profile,则该用户的过期规则会变更。以下举例:修改...
  • php中session过期时间设置及session回收机制介绍更新时间:2014年05月05日 16:46:39 作者:在网上可以找到修改配置文件中的session.gc_maxlifetime,如果想了解更多session回收机制,继续阅读网上很多人给出了解答:...
  • 第一章 zookeeper基础概念1.ZooKeeper是什么 ZooKeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了统一命名服务. 配置管理和分布式锁等分布式的基础服务.在解决分布式数据一致性方面, ZooKeepe ...Tomcat...
  • 本文实例讲述了java设置session过期时间的实现方法,分享给大家供大家参考。具体实现方法如下:1、Timeout in the deployment descriptor (web.xml)以分钟为单位20上面这种设置,对整个web应用生效。当客户端20分钟...
  • Last year I was working on a project for university where one feature necessitated the expiry of records in the database with almost to-the-second precision (i.e. exactly x minutes/hours after creatio...
  • 请问获取cookie和session过期时间的方法是什么回复讨论(解决方案)cookie 的过期时间是你指定的可用 js 计算出剩余时间,php 只能通过附加辅助 cookie 变量简洁获取session 过期时间为 0,不需要考虑有没有get之类的...
  • Nginx设置缓存过期时间 Cache-Control location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ { #禁止缓存,每次都从服务器请求 #add_header Cache-Control no-store; #设置过期时间60秒,60秒过后向服务器...
  • 我这边测试,在不执行发送邮件命令下,等待执行约半个多小时,并且还有大量报错 错误大致分为部分用户 pwdlastset 为空等两类错误 改版: 排除没必要通知的用户 直接读取用户的密码过期时间 Get-ADUser 全脚本仅...
  • Python:获取ssl证书信息和到期时间

    千次阅读 2021-04-19 12:05:16
    1、通过证书获取 openssl x509 -in <cert>.pem -noout -dates 2、通过域名获取 echo | openssl s_client -servername <doman>...# 查询域名证书到期情况 import re import subprocess
  • 蓝山帝景我也有用这个库,过期时间是有用的啊,你是怎么设置的$tokenId=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_URANDOM));$issuedAt=time();$notBefore=$issuedAt+20;$ex...
  • Linux 正确修改账户的过期时间修改/etc/login.defs文件不起作用查看linux用户的需要密码过期时间(已test为例子):`chage -l test`演示chage的用法 /etc/login.defs修改以下的几个参数是不起作用的 修改/etc/login....
  • 设定到期时间,值为一个时间戳 使用以下命令获取2021/10/17的时间戳: date -d 20211017 +%s #返回值为一串数字 例如,设置用户30天后到期(假设今天2021/10/17): 1.先用命令获取30天后的时间戳: date -d ...
  • 查看证书的过期时间

    2021-04-19 11:04:49
    查看数据https的过期时间 echo | openssl s_client -servername 域名 -connect 域名:443 2>/dev/null | openssl x509 -noout -dates
  • func GetDomainSslExpireDate(domain string) string { if !strings.HasPrefix... } command := fmt.Sprint("curl -v -I -k ", domain) cmd := exec.Command("/bin/bash", "-c", command) output, err := cmd.
  • RedisSet缓存List数据操作并设置过期时间—Lua脚本实现 工作中自己开发需要,现有的工具不能满足,于是自己定制了一套 批量缓存List内容数据,而不是将整个List作为一个value缓存,并且删除原有的数据,同时设置过期...
  • 通过域名获取 方法一 echo | openssl s_client -servername 域名 -connect 域名:443 2>/dev/null | openssl x509 -noout -dates notBefore=Oct 19 06:12:48 2020 GMT(起) notAfter=Nov 20 06:12:48 2021 ...
  • 项目过程中经常会有对redis过期监控的需求,当设置过期时间的key失效时做出相应的操作 写一个监听器,继承KeyExpirationEventMessageListener类 package com.redisConfig; import org.springframework.data.redis....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 488,127
精华内容 195,250
关键字:

过期时间