php数值与时间相互转换的用法示例

 更新时间:2017年7月6日 23:49  点击:1982
这篇文章主要介绍了php数值转换时间及时间转换数值用法,涉及php strtotime及date等函数实现日期的字符串格式与Unix时间戳格式转换相关操作技巧,需要的朋友可以参考下

本文实例讲述了php数值转换时间及时间转换数值用法。分享给大家供大家参考,具体如下:

 

 代码如下复制代码

echo$startime=strtotime(date("Y-m-d",time()));//当天0点时间戳

echo"
";

echo$endttime=strtotime(date("Y-m-d",time()).' 23:59:59');//当天23:59:59的INT类型时间戳

echo"
";

//把数值型转成时间字符型

$dotime="1357985479";

echodate("Y-m-d H:i:s",$dotime);//把数字型时间按格式转换成时间格

echo"
";

//输出当前时间字符串型

echostrtotime(date('Y-m-d H:i:s',time()));

echo"
";

//把数值型转成字符串型

echodate('Y-m-d H:i:s',�');

echo"
";

//把字符串型转成数值型

echostrtotime('Y-m-d H:i:s');

//echo "
";

//最近七天

echostrtotime("-7 days")

 

运行结果如下:

 

 代码如下复制代码

1495065600

1495151999

2013-01-12 10:11:19

1495073470

2013-01-12 10:11:19

1494468670

 

本文介绍了php redis实现对200w用户的即时推送,非常实用,有兴趣的同学快来看看吧

怎么实现对200w用户的即时推送,这个推送可以理解为调用第三方的接口,push,sms之类的东西。

当时先写了一个demo 直接读取DB然后单个推送,结果。。可想而知

于是设计一套基于redis+php多进程的方案,用着还不错而去扩展性蛮高的,故分享之。

=============================================

具体的逻辑如下:(无视我的字体)

其实这里还可以优化的,我的设想是如果用户数据再多一些的话,可以在redis里对数据进行分割采取多List,每一个List对应多个php进程这样会更快。

下面是我实现的具体代码:

主管理脚本:应用时启动这个即可。

 

 代码如下复制代码

<?php    //push推送配置 注:使用前请确认log文件为空    2016-04-12

include_once(dirname (__FILE__)."/../../config.inc.php");

//if(exec('ps aux | grep redis_push.php | grep -v grep | wc -l') != 0) goto check;

import('push.class.php');

import('Redis.class.php');

  

$time=time();

$data=array("apikey"=>'xxxx',"secret"=>'xxxx');

$push=newChannel($data);

$redis=newRedisCache($Credis['host'],$Credis['port']);

if(exec('ps aux | grep redis_push.php | grep -v grep | wc -l') != 0)gotocheck;//如果有推送任务 直接执行监控代码

  

/*PUSH配置项*/

$config=array(

 "file"=>"test.txt",

 "Title"=>"sssss",

 "Content"=>"ssssssssssssssss",

 "OpenType"=>"0", //1是 0否  是否跳转链接

 "Url"=>"",    //链接地址

 "num"=>"500",  //每次推送条数

 "s"=>"1"     //睡眠时间 (单位:秒)

);

$num= 15;     //启动进程数量

$a=$config['OpenType']==1 ?"是":"否";

$c= json_encode($config);

$info= <<<monkey

  ************ 请确认信息是否有误*10秒后启动push任务! *************

  * 文件名称  : {$config['file']};

  * 推送标题  : {$config['Title']};

  * 推送内容  : {$config['Content']};

  * 是否跳转  : {$config['OpenType']};

  * 进程数量  :$num;(如果为单进程无视此项)

  * 睡眠时间  : {$config['s']};

  * 日志目录  : /log;

  ***************************************************************\n

monkey;

echo$info;

sleep(3);

$n= 1;

while($n<=10){

 echo(10-$n++),"秒\n";

 sleep(1);

}

echo"------------------------- 任务已启动 -------------------------\n";

if($redis->Scount('push_getchannel_success')){

 echo"队列有未完成任务\n";

}else{

 $res=exec("php redis_getchannel.php {$config['file']}");//写入redis脚本

 echo$res;

}

smtp_mail('xxxx@qq.com','推送任务已开启','请实时监测,5秒后您的手机将接收到测试推送!');//推送监控 实现定时全自动推送 

echo"\n---------------- 5秒后 test 将收到测试推送消息 ----------------\n";

sleep(5);

$re=$push->BaiduPush('xxxx','xxxxx',$config['Content'],$config['Title'],Ƈ',$config['OpenType'],$config['Url'],'xxxxx',$push);

sleep(1);

echo"\n---------------- 测试推送已发出!如未收到,请及时终止程序! 10秒后正式推送!!! ----------------\n";

$m= 1;

while($m<=10){

 echo(10-$m++),"秒\n";

 sleep(1);

}

echo"\n---------------- 推送任务已经开始!请耐心等待! ----------------\n";

//下面设置是否多进程

for($i=1;$i<=$num;$i++){

exec("php redis_push.php '{$c}' > /dev/null 2>&1 &");

}

  

check:

while(1){

 if(exec('ps aux | grep redis_push.php | grep -v grep | wc -l') == 0){

  echo"push 发送完成 用时",time()-$time,"秒";

  die();

 }

 echo"当前进程数:",exec('ps aux | grep redis_push.php | grep -v grep | wc -l'),"个","\n";

 echo"当前剩余推送数量:".$redis->Scount('push_getchannel_success')."\n";

 sleep(10);

}

 

至于写入redis和具体的推送脚本这个靠自己的想象里就好了 我就不发了 嘿嘿

我的做法是具体的推送脚本在推送一定数量后会自动终止并调用自己本身。

因为在实际应用中发现php脚本在长时间运行之后会发生假死(可能是因为上下文切换的问题),所以我都是避免让php脚本长时间运行。

还有就是用户肯定不是固定的200w用户 每天都会有一个增量,我的方案是通过定时脚本每天把增量的用户整理进我自己设计的一个用户表自己管理。

ps:我把所有的脚本弄到了一个我自己整理的小的php原生框架统一管理,过段时间我发出来。

小编推荐的这篇文章介绍了PHP redis实现超迷你全文检索,非常实用,有兴趣的同学快来看看吧

情景:我们平台有好多游戏, 运营的同事在查询某一款游戏的时候, 目前使用的是html的select下拉列表的展现形式, 运营的同事得一个个去找,然后选中,耗时又费眼

效果:输入"三国"或者"国三", 将自动列出所有包含"三国"的游戏名字, 输入不限顺序; 例如输入"杀三国",仍然会将"三国杀"这款游戏找出来

实现:我用redis的集合+PHP的array_intersect()和mb系列函数, 实现了一个超迷你的全文检索功能

原理:(大道不过两三言,说穿不值一文钱,哈哈)

1、将所有的游戏名字读出来,拆分成单个汉字

2、 将这些汉字作为redis集合的键,写入redis,每个集合里的值是所有那些游戏名字中包含此汉字的游戏的id

3、当用户输入文字的时候通过ajax异步请求,将用户输入传给PHP

4、将输入的文字拆分成单个汉字, 分别找到这些汉字在redis中的集合值

5、取出来,求交集,就找到了同时包含这几个汉字的游戏的id

6、最后到数据库里查出来相应的游戏信息即可

缺点:删除数据不方便

PHP写入redis和检索的代码:

 

 代码如下 复制代码

//自动补全

  //不限输入汉字的前后顺序: 输入"国三杀" => 输出 "三国杀"

  functiongetAutoComplate()

  {

    //$word = $this->input->post('word');

    $word='三国';

    if(empty($word)) {

      exit('0');

    }

    $intWordLength= mb_strlen($word,'UTF-8');

 

    $this->load->library('iredis');

    if(1 ==$intWordLength) {

      $arrGid=$this->iredis->getAutoComplate($word);

    }else{

      $arrGid=array();

      for($i=0;$i<$intWordLength;$i++) {

        $strOne= mb_substr($word,$i, 1,'UTF-8');

        $arrGidTmp=$this->iredis->getAutoComplate($strOne);

        $arrGid=empty($arrGid) ?$arrGidTmp:array_intersect($arrGid,$arrGidTmp);//求交集,因为传入的参数个数不确定,因此不能直接求交集

      }

    }

 

    $arrGame=$this->gamemodel->getGameNameForAutoComplate($arrGid);

    // var_dump($arrGame);exit;

    $jsonGame= json_encode($arrGame);

    exit($jsonGame);

  }

 

  //自动补全, 建立索引

  functionsetAutoComplate()

  {

    $arrGame=$this->gamemodel->getAllGameNameForAutoComplate();

    $arrIndex=array();

    foreach($arrGameas$gid=>$gname) {

      $intGnameLength= mb_strlen($gname,'UTF-8');

      for($i=0;$i<$intGnameLength;$i++) {

        $strOne= mb_substr($gname,$i, 1,'UTF-8');

        $arrIndex[$strOne][] =$gid;

      }

    }

     

    $this->load->library('iredis');

    foreach($arrIndexas$word=>$arrGid) {

      foreach($arrGidas$gid) {

        $this->iredis->setAutoComplate($word,$gid);

      }

    }

     

  }

 

操作redis的方法

 

 代码如下 复制代码

//自动补全功能

  publicfunctionsetAutoComplate($key,$value)

  {

    $youxikey='youxi_'.$key;

    $this->sAdd($youxikey,$value);

  }

 

  //自动补全功能

  publicfunctiongetAutoComplate($key)

  {

    $youxikey='youxi_'.$key;

    return$this->sMembers($youxikey);

  }

 

本文分享了浅谈php中变量的数据类型判断函数,非常有用,不会的同学可以参考一下本文

在php中我们可以通过  var_dump()打印出变量的类型和值。同时我们可以通过一些函数判断变量的类型。如果只是想得到一个变量的数据类型,可以使用gettype()函数,gettype($t)  返回$t的数据类型的字符串,要是$t不属于php中8种基本变量类型,返回"unknow  type"。我们还可以通过is_type系类函数直接判断是否为type类型函数,是的话返回true ,不是返回false。

如:


is_bool()        是否为布尔型
is_int()         是否为整型
is_float()       是否为浮点型
is_string()      是否为字符串型
is_array()       是否为数组型
is_object()      是否为对象类型
is_resource()    是否为资源类型
is_null()        是否为空
is_scalar()      是否为标量型,即是一个整型 浮点型 布尔型 或者字符串型。
is_numeric()     是否为任何类型的数字或者数字字符串
is_callable()    是否是有效函数名

本文介绍了PHP检测数据类型的几种方法,非常实用,有兴趣的同学快来看看吧

在JavaScript中,使用typeof可以检测基本数据类型,使用instanceof可以检测引用数据类型。在PHP中,也有检测数据类型的方法,具体如下:

1、输出变量的数据类型(gettype)

 

 代码如下 复制代码

<?php

 

   $arry=array('a','b','c');

 

   echogettype($arry);//array

 

 ?>

 

2、输出变量的数据类型、包含的数量以及具体内容(var_dump)

查看源码打印代码帮助

 

 代码如下 复制代码

<?php

 

  $str='hello world';

 

  var_dump($str);//string(11) "hello world" 

 

?>

 

3、检测某个变量是否是指定的数据类型(is_array、is_string、is_int、is_double等),如果为真返回1,如果为假返回空。

查看源码打印代码帮助

 

 代码如下 复制代码

<?php

 

  $num= 123;

 

  if(is_array($num)){

 

    echo'这是一个数组';

 

  }elseif(is_string($num)){

 

    echo'这是一个字符串';

 

  }elseif(is_int($num)){

 

    echo'这是一个整数';

 

  }elseif(is_double($num)){

 

    echo'这是一个浮点数';

 

  }

 

?>

 

或许你的朋友正在寻找这个问题的答案,赶紧分享给他吧!

[!--infotagslink--]

相关文章

  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • 教你怎么用Java获取国家法定节假日

    这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
  • .NET/C# 使用Stopwatch测量运行时间

    这篇文章主要介绍了.NET/C# 使用Stopwatch测量运行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表:复制代码 代码如下:create table if not exists t( id int, addTime datetime default '0000-00-00 00:00:00′)添加两条初始数据:insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07...2014-05-31
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • 非常全面的php日期时间运算汇总

    实例讲解之前,先来介绍几个核心函数: mktime 函数 mktime() 函数返回一个日期的 Unix 时间戳。 参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。 参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。...2015-11-08
  • C#中动态显示当前系统时间的实例方法

    想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25
  • postgresql 中的时间处理小技巧(推荐)

    这篇文章主要介绍了postgresql 中的时间处理小技巧(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-29
  • 帝国CMS显示指定时间内更新的信息数量

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) 帝国CMS显示指定时间内更新的信息数...2016-11-01
  • C#使用TimeSpan时间计算的简单实现

    这篇文章主要给大家介绍了关于C#使用TimeSpan时间计算的相关资料,以及通过一个实例代码给大家介绍了C#使用timespan和timer完成一个简单的倒计时器的方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧...2020-06-25
  • C# 当前系统时间获取及时间格式详解

    这篇文章主要介绍了C# 当前系统时间获取及时间格式详解的相关资料,这里提供代码实例,帮助大家学习参考,需要的朋友可以参考下...2020-06-25
  • C#获取文件创建时间的方法

    这篇文章主要介绍了C#获取文件创建时间的方法,涉及C#文件操作的技巧及CreattionTime属性的使用方法,需要的朋友可以参考下...2020-06-25
  • 从chrome调试工具中把拖延时间的东西找出来

    我打开android开发手册的时候:http://www.csdn123.com/html/android/reference/packages.html 发现打开速度很慢,我用按了一下F12打开调试面板,切换到网络的选项卡network...2016-05-19
  • PowerShell中使用Get-Date获取日期时间并格式化输出的例子

    这篇文章主要介绍了PowerShell中使用Get-Date获取日期时间并格式化输出的例子,本文讲解了直接调用Get-Date、在Write-Host中使用Get-Date、格式化输出的方法,需要的朋友可以参考下...2020-06-30
  • php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法

    php获取今日开始时间戳和结束时间戳$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;//php获取昨日起始时间戳和结束时间...2013-10-04
  • Mybatis和Mybatis-Plus时间范围查询方式

    这篇文章主要介绍了Mybatis和Mybatis-Plus时间范围查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-06
  • Vue 中获取当前时间并实时刷新的实现代码

    这篇文章主要介绍了Vue 中获取当前时间并实时刷新,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-13
  • python 获取域名到期时间的方法步骤

    这篇文章主要介绍了python 获取域名到期时间的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • 在页面中输出当前客户端时间javascript实例代码

    这篇文章主要介绍了在页面中输出当前客户端时间javascript实例代码的相关资料,需要的朋友可以参考下...2016-03-03