奇怪的行为:取消链接不删除php中的文件

时间:2009-12-07 01:52:19

标签: php

以某种方式取消链接不是删除文件。如果您在文件中看到,我将从$ incoming_file_path复制到$ processing_file_path,而不是在复制完成后。我试图删除$ incoming_file_path中的文件,但不知何故它没有删除,我真的很想知道为什么会这样。好心劝告。

<?php
ini_set('error_reporting',0);
$file = fopen("pid.txt","w+") or die('!fopen');
flock($file, LOCK_EX);

//Folder where xml files will be coming in from UPC
$incoming_file_path = "/home/xmlcontainer";
$processing_file_path = "/home/process_file";
$threshold = time() - 30;
foreach( glob($incoming_file_path.'/*')as $key => $value ) {
  if ( filemtime($value) <= $threshold ) {
    copy($incoming_file_path.$value,$processing_file_path.$value);
    print_r($incoming_file_path.$value."\n");
    unlink($incoming_file_path.$value);
    print_r($incoming_file_path.$value."\n");
    print_r($processing_file_path.$value."\n");
    }
}
flock($file,LOCK_UN);

?>

1 个答案:

答案 0 :(得分:1)

readdir()返回没有路径的文件名。因此,在您的脚本中,而不是filemtime(/home/xmlcontainer/TestInput.xml),只执行filemtime(TestInput.xml)

$ incoming_files还包含while循环中的单个文件名(作为字符串)。嵌套的foreach($incoming_files as ...)永远不会起作用。

btw:为什么要通过date()格式化时间戳,然后将结果字符串相互比较?

$file = fopen("pid.txt","w+") or die('!fopen');
flock($file, LOCK_EX);

//Folder where xml files will be coming in from UPC
$incoming_file_path = "/home/xmlcontainer";
$processing_file_path = "/home/process_file";
$threshold = time() - 30;

foreach( glob($incoming_file_path.'/*') as $source ) {
  if ( filemtime($source) <= $threshold ) {
    // copy / move
    // process
    // unlink
  }
}
flock($file,LOCK_UN);