Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make sure a file handle has been closed before next operation?

This is the code I have so far, I wonder if it's correct?

$handle = fopen($file, 'w') or die("can't open file");
$closed = fclose($handle);
while($closed){
    DOAWESOMETHINGS(); // btw I only want to have this run once for each handle
    $closed = false;
}

Thank you so much!

like image 915
Mohammad Avatar asked Dec 13 '22 14:12

Mohammad


1 Answers

You can check whether the handle has been closed or not using this statement

if(!is_resource($handle)){
   //Handle closed
}else{
   //Handle still open
}

Therefore, if you need to ensure that fclose has worked before running the next function, you can use this loop:

while(is_resource($handle)){
   //Handle still open
   fclose($handle);
}
do_awesome_things();

Note: You should also use break; to end while loops when you need to. In this instance the loop will not end until the handle is closed.

like image 51
Calum Avatar answered Jan 13 '23 15:01

Calum