streams/Code/Storage/Stdio.php
2022-06-23 23:18:22 -07:00

56 lines
No EOL
1.3 KiB
PHP

<?php
namespace Code\Storage;
use Exception;
Class Stdio {
static public function mkdir($path, $mode = 0777, $recursive = false) {
try {
$oldumask = umask(0);
$result = mkdir($path, $mode, $recursive);
umask($oldumask);
} catch (Exception $e) {
// null operation
}
return $result;
}
/**
* @brief Pipes $infile to $outfile in $bufsize chunks
*
* @return int bytes written | false
*/
static public function fpipe($infile, $outfile, $bufsize = 65535, $filemode = 'wb')
{
$size = 0;
$in = fopen($infile, 'rb');
$out = fopen($outfile, $filemode);
if ($in && $out) {
$size = self::pipe_streams($in, $out, $bufsize);
}
fclose($in);
fclose($out);
return $size;
}
/**
* @brief Pipes $in to $out in $bufsize (or 64KB) chunks.
*
* @param resource $in File pointer of input
* @param resource $out File pointer of output
* @param int $bufsize size of chunk, default 65535
* @return number with the size
*/
static public function pipe_streams($in, $out, $bufsize = 65535)
{
$size = 0;
while (!feof($in)) {
$size += fwrite($out, fread($in, $bufsize));
}
return $size;
}
}