PHP设置session定期自动清理的例子
配置完成php后,默认php会将session生成到/tmp目录下,导致/tmp目录文件很多,因此需要对session进行定期的清理:
修改php.ini:
[root@hz scripts]# grep "session.save_path = " /usr/local/php/lib/php.ini
; session.save_path = "N;/path"
; session.save_path = "N;MODE;/path"
;session.save_path = "/tmp"
session.save_path = "2;/tmp/session"
[root@hz ~]# cat /byrd/script/Cleartmpsen.sh
#!/bin/bash
# Version:1.0
# Author:Byrd
# Site:www.t4x.org
# Contact:root#t4x.org
# This is script will clear php session before 3 hours.
i="0 1 2 3 4 5 6 7 8 9 a b c d e f"
for byrd in $i;
do
for x in $i;
do
mkdir -p /tmp/session/$byrd/$x;
done;
done
chown -R bywww:bywww /tmp/session
chmod -R 1777 /tmp/session
find /tmp/session -amin +180 -exec rm -rf {} \;
if [ `grep 'session.save_path =' /usr/local/php/lib/php.ini | wc -l` -eq 3 ];then
sed -i 's#;session.save_path = "/tmp"#;session.save_path = "/tmp"\nsession.save_path = "2;/tmp/session"#g' /usr/local/php/lib/php.ini
else
exit 1
fi
定时任务:
[root@hz scripts]# echo '#This is a config php session BY:BYRD AT:2014-03-31' >>/var/spool/cron/root
[root@hz scripts]# echo '0 3 * * 0 /bin/bash /byrd/scripts/spehspsion.sh >/dev/null 2>&1' >>/var/spool/cron/root
备注:因为此配置修改了php.ini因此需要重新启动php进程。
laravel中excel插件的安装
在composer中引入laravel excel的包
"maatwebsite/excel": "1.*"
在位于laravel/app/config下编辑app.php文件,在providers数组中添加以下值
'Maatwebsite\Excel\ExcelServiceProvider',
在同文件中找到aliasses数组添加以下值
'Excel' => 'Maatwebsite\Excel\Facades\Excel',
执行composer install 或 composer update命令.
laravel excel的配置
在位于laravel/vendor/maatwebsite/excel/src/config下一些对于插件的一些配置项
config.php > 对excel和表全局的一些设置
csv.php > 对导入导出csv文件的设置
export.pho > 对打印出文件内容的一些设置
import.php > 对导入excel文件的设置
laravel excel的简单使用
在之前的准备工作都做好了以后我们就可以用excel插件了
导出excel
<?php
$rows = array( array( 'id' => 1, 'name' => 'marlon' ) );
Excel::create($name, function($excel) use ($rows) {
$excel->sheet('当天报名', function($sheet) use ($rows) {
$sheet->fromArray($rows);
});
})->store('xls', storage_path('excel'));
由于在php闭包中无法拿到闭包外的变量,所以需要用use把$rows引入进去,在最后的链式调用的store中所传的参数就是所需excel的格式和要保存到服务器的位置,此为绝对路径.
在这个地方store()方法为存储,相对应的还可以使用download()方法来直接下载,至于export方法笔者还没搞懂用处是什么
导入excel
<?php
Excel::load(Input::file('excel'), function($reader) {
//获取excel的第几张表
$reader = $reader->getSheet(0);
//获取表中的数据
$results = $reader->toArray();
//在这里的时候$results 已经是excel中的数据了,可以再这里对他进行操作,入库或者其他....
});
一般情况下,此类跳转是302跳转,只是暂时性跳转,如果需要进行永久重写向(SEO上比较有用),可如下实现:
header("HTTP/1.1 301 Moved Permanently");
header("Location: redirect.php");
平时我们使用html做页面的时候,都会碰到定时刷新,可以看到如下标签:
<meta http-equiv="Refresh" content="2;url='refresh.php'">
表示每隔两秒刷新一次页面,实际上是重定向到页面。
由此,PHP根据HTTP协议,可以如下实现:
header( "refresh:2;url=refresh.php" );
1.window.location.href方式
<script language="javascript" type="text/javascript">
window.location.href="target.aspx";
</script>
2.window.navigate方式跳转
<script language="javascript">
window.navigate("target.aspx");
</script>
3.window.loction.replace方式实现页面跳转,注意跟第一种方式的区别
<script language="javascript">
window.location.replace("target.aspx");
</script>
有3个jsp页面(1.aspx, 2.aspx, 3.aspx),进系统默认的是1.aspx,当我进入2.aspx的时候, 2.aspx里面用window.location.replace("3.aspx");
与用window.location.href ("3.aspx");
从用户界面来看是没有什么区别的,但是当3.aspx页面有一个"返回"按钮,调用window.history.go(-1); wondow.history.back();方法的时候,一点这个返回按钮就要返回2.aspx页面的话,区别就出来了,当用 window.location.replace("3.aspx");连到3.aspx页面的话,3.aspx页面中的调用 window.history.go(-1);wondow.history.back();方法是不好用的,会返回到1.aspx。
4.self.location方式实现页面跳转,和下面的top.location有小小区别
<script language="JavaScript">
self.location='target.aspx';
</script>
5.top.location
<script language="javascript">
top.location='target.aspx';
</script>
偶尔用用PHP写点这种很小很小的Web程序,还是蛮简单方便的。
PHP实现文件下载功能的代码如下
<?php
$base_dir = "/usr/share/nginx/html/";
$myfile = $base_dir . $_GET["file"];
//echo $myfile;
if( ! file_exists($myfile) ) {
echo "file: " . $myfile . " doesn't exist.";
} elseif ( is_dir($myfile) ) {
echo "file: " . $myfile . " is a directory.";
} else {
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . basename($myfile) . '"');
header("Content-Length: ". filesize($myfile));
readfile($myfile);
}
?>
github: https://github.com/smilejay/other-code/blob/master/php/download.php
另外,一个牛人分析一下使用apache/nginx的一些模块让php实现问下下载更加的高效:
http://www.laruence.com/2012/05/02/2613.html
PHP的输出缓存是可以嵌套的。用ob_get_level()就可以输出嵌套级别。
测试发现在cli和浏览器下输出结果不一样(PHP5.4)。
ob_level1.png手册说明如下:
ob_get_level() will always return 0 inside a destructor.
This happens because the garbage collection for output buffers has already done before the destructor is called
想要正确输出也很简单:
ob_end_clean();
echo ob_get_level(); //0
回到正题:
ob_end_clean();
ob_start();
echo 'php1';//此处并不会在页面中输出
$a = ob_get_level();
$b = ob_get_contents();//获得缓存结果,赋予变量
ob_clean();
ob_start();
echo 'php2';//此处并不会在页面中输出
$c = ob_get_level();
$d = ob_get_contents();//获得缓存结果,赋予变量
ob_clean();
ob_start();
echo 'php3';//此处并不会在页面中输出
$e = ob_get_level();
$f = ob_get_contents();//获得缓存结果,赋予变量
ob_clean();
echo 'level:'.$a.',ouput:'.$b.'<br>';
echo 'level:'.$c.',ouput:'.$d.'<br>';
echo 'level:'.$e.',ouput:'.$f.'<br>';
结果如下:
level:1,ouput:php1
level:2,ouput:php2
level:3,ouput:php3
当然,当你关闭某个级别的缓冲,如下测试:
ob_end_clean();
ob_start();
echo 'php1';
$a = ob_get_level();
$b = ob_get_contents();
ob_clean();
ob_start();
echo 'php2';
$c = ob_get_level();
$d = ob_get_contents();
ob_end_clean(); //清空缓存并关闭缓存
ob_start();
echo 'php3';
$e = ob_get_level();
$f = ob_get_contents();
ob_clean();
echo 'level:'.$a.',ouput:'.$b.'<br>';
echo 'level:'.$c.',ouput:'.$d.'<br>';
echo 'level:'.$e.',ouput:'.$f.'<br>';
结果如下:
level:1,ouput:php1
level:2,ouput:php2
level:2,ouput:php3
相关文章
PHP session_start()很慢问题分析与解决办法
本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25- 这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
- TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
PHP分布式框架如何使用Memcache同步SESSION教程
本教程主要讲解PHP项目如何用实现memcache分布式,配置使用memcache存储session数据,以及memcache的SESSION数据如何同步。 至于Memcache的安装配置,我们就不讲了,以前...2016-11-25- 这篇文章主要介绍了C#中的session用法 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
Python3使用Selenium获取session和token方法详解
这篇文章主要介绍了Python3使用Selenium获取session和token方法详解,需要的朋友可以参考下...2021-02-17- session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
Windows Server 2008 R2远程设置选项灰色解决方法
最近公司环境有几天Windows Server 2008R2的服务器因为没有激活导致过期后都不能远程,连接显示器后发现远程设置的地方为灰色了...2016-01-27- session在php中是一个非常重要的东西,像我们用户登录一般都使用到session这个东西,相对于cookie来说session 要安全很多,同时我们购物车经常使用session来做临时的记录保存哦。使用session保存页面登录信息1、数据库连接...2015-10-21
vivo x9怎么设置默认输入法?vivo x9设置默认输入法教程
本篇文章介绍了vivo x9如何设置默认输入法的方法,手机小白们快来了解一下吧。 问:vivo x9怎么设置默认输入法?答:其实设置默认输入法很容易,首先点击应用程序,然后点设...2017-01-22- 这篇文章主要介绍了Vue使用axios引起的后台session不同操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-14
- PHP的session功能,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。 1. 错误提示 引用 代...2016-11-25
- 要设置php生存有效时间我们可以利用session_set_cookie_params函数或修改php.ini文件哦,下面小编来介绍一下。 第一种方法:session_set_cookie_params 函数原型 voi...2016-11-25
- 最近公司的网站升级Windows 2016服务器,选择安装了最新版的Windows 2016,以前使用Windows服务器还是Windows 2003系统,发现变化还是挺多的,依次记录下来以备后面查阅...2020-10-05
- PHP脚本实现Magento权限设置与缓存清理的实例代码有需要的朋友可参考一下。 代码如下 复制代码 <?php ## 设置文件644,目录755 function Al...2016-11-25
基于xpath选择器、PyQuery、正则表达式的格式清理工具详解
这篇文章主要介绍了基于xpath选择器、PyQuery、正则表达式的格式清理工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07- 如果要允许用户在站点中上载或下载文件,就需要在 Web 服务器上设置 FTP。无论站点是位于 Intranet 还是位于 Internet 上,使用 FTP 在所提供的位置中上载和下载文件的原理是相同的。...2016-01-27
- 本篇文章是对为Visual Assist设置快捷键的方法进行了详细的分析介绍,需要的朋友参考下...2020-04-25
jQuery ajax全局函数处理session过期后的ajax跳转问题
这篇文章主要介绍了基于jQuery的全局ajax函数处理session过期后的ajax操作的相关资料,需要的朋友可以参考下...2016-06-12- 这篇文章主要介绍了goland设置颜色和字体的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-04