2011-07-22 61 views
0

我目前不能使用flock(服務器限制),所以我正在創建一個替代文件鎖定系統。這是我的代碼。同時執行腳本如果 - 否則問題

$dir = "C:\\wamp\\www\\test\\"; 
$files = scandir($dir); 

for($i=0; $i<count($files); $i++) 
{ 
    if(substr(strrchr($files[$i],'.csv'),-4) == '.csv') 
    {   
     echo "File ".$files[$i]." is a csv"."</br>"; 
     if (file_exists("$dir$files[$i].lock")) 
     { 
      echo $files[$i]." has lock in place"."</br>"; 
      $i++; 
     } 
     else 
     { 
      if($file_handle = fopen("$dir$files[$i]", "rb")) 
      { 
       $file_lock_handle = fopen("$dir$files[$i].lock", "w"); 
       echo "Setting Lock"."</br>"; 

       //Do Logic 

       fclose($file_handle); 
       fclose($file_lock_handle);   

       sleep(3); 
       unlink("$dir$files[$i].lock"); 
      }  
     } 
    } 
    else 
    { 
     //Do nothing 
    } 
} 

如果我並排運行這些腳本。它在執行第二個腳本之前等待第一個腳本完成。我怎樣才能同時運行它們?即如果存在鎖定,我希望它跳過該文件並轉到下一個文件。

回答