mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-21 02:55:17 +00:00
56 lines
No EOL
1.3 KiB
PHP
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;
|
|
}
|
|
|
|
} |