在PHP虚拟主机上,不会有系统级的权限。
目标如下:现有a文件夹,放着一些用户生成的临时文件,由于空间大小的限制,需要定时做删除,期望每隔一个小时遍历a目录,删除a下距离那一时刻超过5分钟以上的文件。因为对PHP不是太熟,最好有代码,结贴会很快,谢谢
目标如下:现有a文件夹,放着一些用户生成的临时文件,由于空间大小的限制,需要定时做删除,期望每隔一个小时遍历a目录,删除a下距离那一时刻超过5分钟以上的文件。因为对PHP不是太熟,最好有代码,结贴会很快,谢谢
附上代码:<?php
ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行set_time_limit(0); //忽略php.ini设置的脚本运行时间限制$interval = 15*60; //设置执行周期,单位为秒,e.g. 15分钟为 15*60=900do{
//脚本内容
/*
* 这个是我的测试脚本
$fp = fopen('testtxt.txt','a');
fwrite($fp,'test');
fclose($fp);
*/
$dir = "tmp/"; //你的临时目录位置
if(is_dir($dir)) {
if($od=opendir($dir)) {
while(($file=readdir($od))!==false) {
unlink($file); //读取目录内的文件并删除
}
closedir($od);
}
}
sleep($interval); //执行一个周期后,休眠$interval时间,休眠结束后脚本继续执行
}while(true); //周期性执行脚本
php定时脚本 http://blog.csdn.net/webdesman/archive/2009/09/02/4510372.aspxphp删除文件 http://believable.blog.163.com/blog/static/108570833201011431623142/
ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行set_time_limit(0); //忽略php.ini设置的脚本运行时间限制$interval = 15; //设置执行周期,单位为秒,e.g. 15分钟为 15*60=900do{
//脚本内容
/*
* 这个是我的测试脚本
$fp = fopen('testtxt.txt','a');
fwrite($fp,'test');
fclose($fp);
*/
$dir = "tmp"; //你的临时目录位置,请注意,文件夹最后不要加上"/"
if(is_dir($dir)) {
if($od=opendir($dir)) {
while(($file=readdir($od))!==false) {
if(is_file("$dir/$file")) {
unlink("$dir/$file"); //读取目录内的文件并删除
}
}
closedir($od);
}
} else {
echo $dir." is not a directory";
}
sleep($interval); //执行一个周期后,休眠$interval时间,休眠结束后脚本继续执行
}while(true); //周期性执行脚本
有两个问题:
1.假设服务器重启,这个文件要保持运行,是不是我至少要触发一次
2.如果删除文件失败,或者当前文件正在被使用,程序会不会报错并且影响其他文件的删除
http://topic.csdn.net/u/20110615/09/78c6168f-e2f7-4222-a8b4-0ed9b21d94be.html
都沉下去好久好久了。
在123.txt设定个标志位,让上面的程序while循环每次执行前读一下这个txt里的标志位,如果为1就继续,为0就推出循环,是不是这个文件就不再运行了。具体语句麻烦谁熟悉PHP的写下了
<?php
$flag = 1; //将执行标志设置为1,默认为执行ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行set_time_limit(0); //忽略php.ini设置的脚本运行时间限制$interval = 15*60; //设置执行周期,单位为秒,e.g. 15分钟为 15*60=900do{
//脚本内容
/*
* 这个是我的测试脚本
$fp = fopen('testtxt.txt','a');
fwrite($fp,'test');
fclose($fp);
*/
/*
读取执行标志flag
*/
$flagfile = "flag.txt"; //标志放置在文件“flag.txt”中。“0”表示停止执行,“1”表示继续执行 if(file_exists($flagfile) && is_readable($flagfile)) { //读取文件内容
$fh = fopen($flagfile,"r");
while (!feof($fh)) {
$flag = fgets($fh); //存储标志
}
fclose($fh);
}
$dir = "tmp"; //你的临时目录位置,请注意,文件夹最后不要加上"/"
if(is_dir($dir)) {
if($od=opendir($dir)) {
while(($file=readdir($od))!==false) {
if(is_file("$dir/$file")) {
unlink("$dir/$file"); //读取目录内的文件并删除
}
}
closedir($od);
}
} else {
echo $dir." is not a directory";
}
sleep($interval); //执行一个周期后,休眠$interval时间,休眠结束后脚本继续执行
}while($flag); //判断$flag的值,周期性执行脚本