php获取一个文件夹的mtime的程序

 更新时间:2016年11月25日 15:33  点击:4801
php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。

php很容易获取到一个文件夹的mtime,可以使用filemtime函数。但文件夹的filemtime由于linux的原因。文件修改时,只会影响他当前的文件夹mtime变化。并不会继续影响文件夹上层的文件夹。所以可能跟真正想得到的文件夹的最后修改时间不同。

看linux机器上的效果如下, 可以看到yoyoTmp的mtime小于yoyoTmp/test的mtime。

[root@localhost test]# ls -ld --full-time /yoyoTmp/
drwxr-xr-x. 4 root root 34 2015-12-01 21:09:47.526804049 +0800 /yoyoTmp/
[root@localhost test]# ls -ld --full-time /yoyoTmp/test
drwxr-xr-x. 2 root root 20 2015-12-01 21:15:22.266131826 +0800 /yoyoTmp/test
也可使用stat 文件夹命令查看mtime之类信息

google得知一个phper实现了如下 原文链接:

function dirmtime($directory) {
    // 1. An array to hold the files.
    $last_modified_time = 0;

    // 2. Getting a handler to the specified directory
    $handler = opendir($directory);

    // 3. Looping through every content of the directory
    while ($file = readdir($handler)) {
        // 3.1 Checking if $file is not a directory
        if(is_file($directory.DIRECTORY_SEPARATOR.$file)){
            $files[] = $directory.DIRECTORY_SEPARATOR.$file;
            $filemtime = filemtime($directory.DIRECTORY_SEPARATOR.$file);
            if($filemtime>$last_modified_time) {
                $last_modified_time = $filemtime;
            }
}
    }

    // 4. Closing the handle
    closedir($handler);

    // 5. Returning the last modified time
    return $last_modified_time;
}

Example

This example demonstrates how to find the last modified time of the directory, where the working PHP script file resides, and print the result to the screen.

 PHP. Print the Last Modified Time of Current Directory  ?
$directory = dirname(__FILE__);

$dir_last_modified_time = dirmtime($directory);

echo date('d M Y h:i:s', $dir_last_modified_time);

因为项目需要我们要使用新浪支付接口来做一个在线支付功能了,这个是从网上整理了一些关于新浪支付开的学习笔记及自己测试成功后的代码了,下面来看看。


在使用新浪支付接口的时候,需要进行一个接口的创建,刚刚由夏日博客新建的一个新浪接口,整合的是方维P2P网贷系统,下面这个接口还是比较简单的,只是一个解绑认证信息的接口,也就是解绑我们在新浪上面的身份证等信息,操作步骤如下,仅供夏日参考学习使用。

1,后台复制一个按钮链接

2,/admin/Tpl/default/Common/js/user.js 添加一个跳转,注意名字
3, php添加一个类,路径-->app/lib/module/collocationModule.class.php,代码如下:
public function AdminUnbindUser(){ 
    $user_id=(int)$_GET['user_id'] ; 
    $class_name = getCollName(); 
     
    require_once APP_ROOT_PATH."system/collocation/".$class_name."_collocation.php"; 
    $collocation_class = $class_name."_collocation"; 
    $collocation_object = new $collocation_class(); 
     
    $collocation_code = $collocation_object->AdminUnbindUser($user_id); 

4,在 /system/collocation/Sina_collocation.php 文件中添加如下代码:
function AdminUnbindUser($uid){ 
 
    require_once(APP_ROOT_PATH.'system/collocation/sina/AdminUnbindUser.php'); 
     
    return AdminUnbindUser($uid); 
 

5,到 system/collocation/sina/ 中新建一个 AdminUnbindUser,下面的代码从
/a/zjtg_php_demo/controller/controller_sina.php 中查找服务名称,把类中的文件全复拷贝出来放到 AdminUbindUser($uid) 中,内容如下:
<?php 
 function AdminUnbindUser($uid){ 
    $weibopay = new Weibopay(); 
    /**************获取解绑认证信息参数****************/ 
    $service='unbinding_verify';//服务名称 
    $version=sinapay_version;//接口版本 
    $request_time=date("YmdHis");//请求时间 
    $partner_id=sinapay_partner_id;//合作者身份ID 
    $_input_charset=sinapay_input_charset;//参数编码字符集 
    $sign_type=sinapay_sign_type;//签名类型 
    /****************业务参数***********************/ 
    $identity_id=sinapay_identity_id.$uid;//用户标识信息---原来的 $identity_id=$data['identity_id'];//用户标识信息 
    $identity_type=sinapay_identity_type;//用户标识类型 
    $verify_type='MOBILE';//认证类型 
    $param=array(); 
    $param['service']=$service; 
    $param['version']=$version; 
    $param['request_time']=$request_time; 
    $param['partner_id']=$partner_id; 
    $param['_input_charset']=$_input_charset; 
    $param['sign_type']=$sign_type; 
    $param['identity_id']=$identity_id; 
    $param['identity_type']=$identity_type; 
    $param['verify_type']=$verify_type; 
    ksort($param);//对签名参数据排序 
    //对请求sina报文进行签名 
    $sign=$weibopay->getSignMsg($param,$sign_type); 
    //将签名结果存入请求sina的数组 
    $param['sign']=$sign; 
    $weibopay->write_log("解绑认证信息请求参数".json_encode($param)); 
    $data = $weibopay->createcurl_data($param); // 调用createcurl_data创建模拟表单需要的数据 
    $result = $weibopay->curlPost(sinapay_mgs_url,$data ); // 使用模拟表单提交进行数据提交 
    $result = urldecode ($result); 
    $splitdata = json_decode($result,true); 
    $sign_type = $splitdata ['sign_type'];//签名方式 
    ksort($splitdata); // 对签名参数据排序 
    print_r($param);print_r($splitdata);die(); 
    if ($weibopay->checkSignMsg ($splitdata,$sign_type)) { 
        if ($splitdata["response_code"] == 'APPLY_SUCCESS') { // 成功 
            return $splitdata; 
            exit(); 
        }else 
        { 
            //业务处理失败 
            return $splitdata; 
            exit(); 
        } 
    } else { 
        die ( "sing error!" ); 
    } 
     
 } 
其中 /a/zjtg_php_demo/controller/controller_sina.php 中的文件是新浪提供的接口实例,只需传递一个UID即可,其它不用变动。

新浪支付接口开发与支付宝的差不多先是按官方的要求提交数据然后再把支付成功的信息反馈过来给用户,这样就实现了支付及成功的提示了。

所谓的新浪回调接口,就是当资金充值成功之后,新浪会通知本网站一个信息来告知已经充值成功,并返回一组成功的数组,我们根据这些数据再进行一个本地数据库的同步操作,比如更新本地数据库是否充值成功的状态,由未支付改为已支付,然后再网站上面进行显示,还有资金也会进行同步 update,好了,下面夏日博客把日志分享下来,接着上一篇新浪支付新建接口,一个简单的新浪支付回调接口,这个异步回调的信息是通过日志生成到ftp下面的,根据日志进行本地的更新。

一,先查看日志文件

说明:数据提交到新浪之后会生成新浪日志文件,如下:

{"ctl":"collocation","act":"response_sina","call":"registercreditor","notify_time":"20160317112508","sign_type":"RSA","notify_type":"trade_status_sync","gmt_payment":"20160317111255","trade_status":"PAY_FINISHED","version":"1.0","sign":"ULbWNFkn1DhF1z9M5daaJHKcvlyTCHS1SmH3o7AMwAQnYylMQATfpNXzdloFh5R43cm3MTaTuaAxEddSRckMBzemZ+XlqEcERsu8x6HA0OnIZW5YVOgQhPfnz4lbH3MC4yjxPzq9dQgE\/fVLJ+pWnaeVtXJMiyRygohCdX+mT28=","gmt_create":"20160317111254","_input_charset":"utf-8","outer_trade_no":"7L3No20160317111143","trade_amount":"100.00","inner_trade_no":"101145818437424877398","notify_id":"82170f9981b84c40b50a634ed37a2afd"} 

二,打开 /app/lib/module/collocationModule.class.php,查找 response_sina 方法,方法如下:

public function response_sina() 
{  
     $content=  $_REQUEST; 
    error_log( date ( "[YmdHis]" ) ."\t" . json_encode($content) . "\r\n", 3, '../'. date ( "Y-m-d" ) . '.log1' ); 
      
    $class_name = getCollName(); 
    require_once APP_ROOT_PATH."system/collocation/".$class_name."_collocation.php"; 
    $collocation_class = $class_name."_collocation"; 
    $collocation_object = new $collocation_class(); 
    $collocation_code = $collocation_object->SinaNotify($_POST,$_REQUEST);  

三,打开 system/collocation/Sina_collocation.php 文件,查找 SinaNotify 方法,如下:

function SinaNotify($map,$data){ 
       // $weibopay->write_log("获取到refund_status_sync结果通知:单号:".json_encode($map).json_encode($data)); 
        ksort ($map);  
        $weibopay = new Weibopay (); 
        error_log( date ( "[YmdHis]" ) ."\t" . json_encode($map).  json_encode($data). "\r\n", 3, '../'. date ( "Y-m-d" ) . '.log10' ); 
        if ($weibopay->checkSignMsg ($map,@$map ["sign_type"] )) { 
            switch ($map["notify_type"]) 
            {     
                //交易结果通知 
                case "trade_status_sync": 
                    //投标代收 
                    
                    if($data['call']=='registercreditor'){ 
                       
                        require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php'); 
                          
                         registercreditor_status_sync($map); 
                         
                         
                         
                    }  
                    if($data['call']=='dotrtrade'){ 
                      
                        error_log( date ( "[YmdHis]" ) ."\t" . json_encode($map). "\r\n",4, '../'. date ( "Y-m-d" ) . '.log4' ); 
                        require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php'); 
                     
                         dotrtrade_status_sync($map); 
                          
                          
                          
                    } 
                    if($data['call']=='dohktrade'){ 
                     
                        error_log( date ( "[YmdHis]" ) ."\t" . json_encode($map). "\r\n", 5, '../'. date ( "Y-m-d" ) . '.log41' ); 
                        require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php'); 
                          
                         dohktrade_status_sync($map); 
                     
                     
                     
                    } 
                     
                     
                    //按照自己的业务需求获取对应参数进行保存 
                  //  $weibopay->write_log("获取到trade_status_sync结果通知:时间:".date("YmdHis")); 
                   // $weibopay->write_log("获取到trade_status_sync结果通知:单号:".json_encode($_REQUEST)); 
                    break; 
                    //交易退款结果通知 
                case "refund_status_sync": 
                    //按照自己的业务需求获取对应参数进行保存 
                    $weibopay->write_log("获取到refund_status_sync结果通知:时间:".date("YmdHis")); 
                    $weibopay->write_log("获取到refund_status_sync结果通知:单号:".json_encode($_REQUEST)); 
                    break; 
                    //充值结果通知 
                case "deposit_status_sync": 
                    //done 
                    require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php'); 
                     
                     deposit_status_sync($map); 
             
                    break; 
                    //提现结果通知 
                case "withdraw_status_sync": 
                    $weibopay->write_log("获取到batch_trade_status_sync结果通知:时间:".date("YmdHis")); 
                    $weibopay->write_log("获取到batch_trade_status_sync结果通知:单号:".json_encode($_REQUEST)); 
                    require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php'); 
                      
                     withdraw_status_sync($map); 
                 
                    break; 
                    //批量代付结果通知 
                case "batch_trade_status_sync": 
                    //按照自己的业务需求获取对应参数进行保存 
                    $weibopay->write_log("获取到batch_trade_status_sync结果通知:时间:".date("YmdHis")); 
                    $weibopay->write_log("获取到batch_trade_status_sync结果通知:单号:".json_encode($_REQUEST)); 
                    break; 
                    //审核结果通知 
                case "audit_status_sync": 
                    require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php'); 
                     
                    audit_status_sync($map); 
                    //按照自己的业务需求获取对应参数进行保存 
                    $weibopay->write_log("获取到audit_status_sync结果通知:时间:".date("YmdHis")); 
                    $weibopay->write_log("获取到audit_status_sync结果通知:单号:".json_encode($_REQUEST)); 
                    break; 
                default: 
                    $weibopay->write_log("获取到未知结果通知:时间:".date("YmdHis")); 
                    $weibopay->write_log("获取到未知结果通知:单号:".json_encode($_REQUEST)); 
                    echo "通知类型错误!"; 
            } 
            // 如果回调成功,需要输出SUCCESS告知新浪回调服务器,已经收到异步通知。 
            echo 'success'; 
        } else { 
            $msg="签名错误 or 非法请求"; 
            $weibopay->write_log($msg); 
            die ( "sign error" ); 
        } 
    } 
    //资质提价 
四,打开 system/collocation/sina/SinaNotify.php 文件,充值回调。
if($map['trade_status']=='PAY_FINISHED'){ 
            $pErrCode = 'MG00000F'; 
            $data['pErrCode'] ='MG00000F'; 
            $data['pErrMsg'] = 'MG00000F';; 
        } 
五,成功之后进行下面的操作。

PHP+Ajax有许多的功能都会用到它小编今天就有使用PHP+Ajax实现的一个微信登录功能了,下面我们来看一个PHP+Ajax手机发红包的程序例子,具体如下所示。

PHP发红包基本流程:当输入完红包数量和总金额后,PHP会根据这两个值进行随机分配每个金额,保证每个人都能领取到一个红包,且每个红包金额不等。也就是每个人领取的红包金额要不同,并且所有红包金额总额等于总金额。如图:

big.jpg

php发红包实现原理:

设定总金额为10元,有N个人随机领取:

N=1 第一个

则红包金额=X元;

N=2 第二个

为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数

第二个红包=10-第一个红包金额;

N=3 第三个

红包1=0.01至9.99之间的某个随机数

红包2=0.01至(10-红包1-0.01)的某个随机数

红包3=10-红包1-红包2

……

于是我们得到一个规律,在分配当前红包金额时,先预留剩余红白所需最少金额,然后在0.01至总金额-预留金额间取随机数,得到的随机数就是当前红包分配的金额。

实际应用中,程序先将红包金额分配好,即发红包时,红包个数以及每个红包的金额都分配好了,那么用户来抢红包时,我们随机给用户返回一个红包即可。
jQuery代码:

$(function() {
    $("button").click(function() {
        $.ajax({
            type: 'POST',
            url: 'bao.php',
            dataType: 'json',
            beforeSend: function() {
                $("#result").html('正在分配红包');
            },
            success: function(json) {
                if (json.msg == 1) {
                    var str = '';
                    var res = json.res;
                    $.each(res,
                    function(index, array) {
                        str += '<p>第<span>' + array['i'] + '</span>个红包,
                        金额<span>' + array['money'] + '</span>元,余额<span>' +
                        array['total'] + '元</span></p>';
                    });
                    $("#result").html(str);
                } else {
                    $("#result").html('数据出错!');
                }
            }
        });
    });
});
PHP代码:bao.php

$total=20;//红包总金额   
$num=10;// 分成10个红包,支持10人随机领取   
$min=0.01;//每个人最少能收到0.01元   
 
for ($i=1;$i&lt;$num;$i++)   
{   
    $safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限   
    $money=mt_rand($min*100,$safe_total*100)/100;   
    $total=$total-$money;  
     
    echo '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 ';   
}   
echo '第'.$num.'个红包:'.$total.' 元,余额:0 元';

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31