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; } }