What are the best practices for splitting and rejoining files in PHP for backup purposes?
When backing up large files in PHP, it is common practice to split them into smaller chunks for easier storage and transfer. To split a file, you can read it in chunks and write each chunk to a separate file. To rejoin the split files, you can read each chunk file and append its contents to a new combined file.
// Split a file into chunks
function splitFile($inputFile, $chunkSize, $outputDir) {
$file = fopen($inputFile, 'rb');
$chunkNum = 1;
while (!feof($file)) {
$chunk = fread($file, $chunkSize);
file_put_contents($outputDir . '/chunk_' . $chunkNum, $chunk);
$chunkNum++;
}
fclose($file);
}
// Rejoin split files into a single file
function joinFiles($chunkDir, $outputFile) {
$output = fopen($outputFile, 'wb');
for ($i = 1; file_exists($chunkDir . '/chunk_' . $i); $i++) {
$chunk = file_get_contents($chunkDir . '/chunk_' . $i);
fwrite($output, $chunk);
}
fclose($output);
}
// Example usage
$inputFile = 'largefile.txt';
$chunkSize = 1024; // 1KB
$outputDir = 'chunks';
$outputFile = 'rejoined_file.txt';
splitFile($inputFile, $chunkSize, $outputDir);
joinFiles($outputDir, $outputFile);