本文目录一览:
- 1、php中的unlink()在转码后能够正常删除文件,但是却还是报错,这是为什么?怎么才能解决?
- 2、php discuz的定时任务是什么原理怎么实现的?求高手解答
- 3、为什么在服务器上用php的函数unlink不好使,不能删除文件
- 4、php中unlink函数报错
- 5、PHP的unlink函数用不了
- 6、php中用unlink删除图片时报错。
php中的unlink()在转码后能够正常删除文件,但是却还是报错,这是为什么?怎么才能解决?
意思是无效参数。如果是windows下,是不是(本级)“.”与(上一级)“..”没有过滤?unlink之前,请用is_file检测一下。
php discuz的定时任务是什么原理怎么实现的?求高手解答
php中定时计划任务的实现原理:
当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限时,TIMEOUT 状态的标记将被打开。-phpunlink超时
示例代码:
?php
ignore_user_abort(true);set_time_limit(0);
date_default_timezone_set('PRC'); // 切换到中国的时间
$run_time = strtotime('+1 day'); // 定时任务第一次执行的时间是明天的这个时候
$interval = 3600*12; // 每12个小时执行一次
if(!file_exists(dirname(__FILE__).'/cron-run')) exit(); // 在目录下存放一个cron-run文件,如果这个文件不存在,说明已经在执行过程中了,该任务就不能再激活,执行第二次,否则这个文件被多次访问的话,服务器就要崩溃掉了-phpunlink超时
do {
if(!file_exists(dirname(__FILE__).'/cron-switch')) break; // 如果不存在cron-switch这个文件,就停止执行,这是一个开关的作用
$gmt_time = microtime(true); // 当前的运行时间,精确到0.0001秒
$loop = isset($loop) $loop ? $loop : $run_time - $gmt_time; // 这里处理是为了确定还要等多久才开始第一次执行任务,$loop就是要等多久才执行的时间间隔-phpunlink超时
$loop = $loop 0 ? $loop : 0;
if(!$loop) break; // 如果循环的间隔为零,则停止
sleep($loop);
// ...
// 执行某些代码
// ...
@unlink(dirname(__FILE__).'/cron-run'); // 这里就是通过删除cron-run来告诉程序,这个定时任务已经在执行过程中,不能再执行一个新的同样的任务
$loop = $interval;
} while(true);
为什么在服务器上用php的函数unlink不好使,不能删除文件
服务器是什么操作系统,为了安全考虑,一般可执行文件都没有权限删除服务器的文件和文件夹
php中unlink函数报错
把报的错误发上来,我们好看哪里出了错。
有可能是 没有删除文件的权限,要看一下报的什么错。
先加一行设置权限的代码试试。 chmod($name, 0777);
if(file_exists($path.$fileName)){
//代码进入到这里来了
$name = $path.$fileName;
chmod($name, 0777);
if(unlink($name)){//执行这个函数就报错,报500
echo "删除文件咯";exit;
}else{
echo "删除失败";exit;
}
PHP的unlink函数用不了
如果权限没有问题的话,那就是你没有关闭文件操作流。
你试试下面的结构
$fp = fopen(文件名路径,'r');
//你的操作
......
//注意关闭文件操作流
fclose( $fp );
//再删除文件
@unlink( 文件名路径 );
我试了,这样应该好使的。
php中用unlink删除图片时报错。
参数无效!
可能是$rs_0['aImg']没有值或者值不符合规范!
你输出
echo $rs_0['aImg'];
看看是什么值
例外,建议在删除图片之前,先判断一下图片是否存在,否则,如果万一图片不存在,而你再去删除,同样会出错的!
如下:
!file_exists( $rs_0['aImg'] ) or unlink( $rs_0['aImg'] );