How can chunking or zipping files be utilized to successfully upload files larger than 2GB in PHP?

When uploading large files larger than 2GB in PHP, it is important to chunk or zip the files before uploading to prevent memory issues and timeouts. This can be achieved by splitting the file into smaller chunks and uploading them individually, or by zipping the file before uploading and then unzipping it on the server side.

// Chunking files for upload
$chunkSize = 1024 * 1024; // 1MB chunk size
$fileName = 'large_file.zip';
$fileSize = filesize($fileName);

$handle = fopen($fileName, 'rb');
$chunk = fread($handle, $chunkSize);
$chunkNumber = 0;

while (!feof($handle)) {
    $chunkNumber++;
    // Upload chunk to server
    // Example: uploadChunk($chunk, $chunkNumber);
    $chunk = fread($handle, $chunkSize);
}

fclose($handle);

// Zipping files for upload
$zip = new ZipArchive();
$zipFileName = 'large_file.zip';
$zip->open($zipFileName, ZipArchive::CREATE);

$zip->addFile('large_file.txt', 'large_file.txt'); // Add file to zip

$zip->close();

// Upload zipped file to server
// Example: uploadZipFile($zipFileName);