Using some simple files for caching and some basic user data. Was first just using `file_put_contens` and `file_get_contents`, but realized this could quickly go wrong when traffic starts increasing.

Been trying to figure out how to do it properly with `flock`, correct file modes, etc, and come up with the following functions. Have I understood things correctly? Will this be safe in most normal use-cases, with small to medium web site usage?

    class File
    {
    
    	public static function read($path, $default = NULL)
    	{
    		$fp = @fopen($path, 'r');
    		if( ! $fp)
    			return $default;
    
    		flock($fp, LOCK_SH);
    		$data = fread($fp, filesize($path));
    		flock($fp, LOCK_UN);
    		fclose($fp);
    
    		return $data;
    	}
    
    
    	public static function write($path, $data)
    	{
    		self::check(dirname($path));
    
    		$fp = fopen($path, 'c');
    		flock($fp, LOCK_EX);
    		ftruncate($fp, 0);
    		fwrite($fp, $data);
    		fflush($fp);
    		flock($fp, LOCK_UN);
    		fclose($fp);
    
    		return $data;
    	}
    
    
    
    	public static function check($dir)
    	{
    		if( ! is_dir($dir))
    		{
    			// https://en.wikipedia.org/wiki/Chmod#System_call
    			@mkdir($dir, 06740, true);
    			@chmod($dir, 06740);
    		}
    		return $dir;
    	}
    }