اسکریپت دانلود فایل حجیم با PHP
در این نوشته یک اسکریپت PHP ارائه میکنیم تا بتوانید با کمک آن یک فایل را بدون timeout فایلی با حجم بالا را دانلود کنید.
روش دانلود فایل حجیم با کمک اسکریپت PHP
برای دانلود فایلهای حجیم در زبان برنامه نویسی PHP و بدون timeout از اسکریپت زیر استفاده کنید:
<?php
// Disable time limit
set_time_limit(0);
// URL of the file to download
$fileUrl = 'https://test.com/test.zip';
$fileName = basename($fileUrl);
// Set the path to the current directory
$savePath = __DIR__ . '/' . $fileName;
// Function to format bytes to a human-readable format
function formatBytes($bytes, $precision = 2)
{
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = min($pow, count($units) - 1);
$bytes /= (1 << (10 * $pow));
return round($bytes, $precision) . ' ' . $units[$pow];
}
// Progress callback function
function progressCallback($downloadSize, $downloaded, $uploadSize, $uploaded)
{
if ($downloadSize > 0) {
$progress = round(($downloaded / $downloadSize) * 100, 2);
echo "Downloaded " . formatBytes($downloaded) . " of " . formatBytes($downloadSize) . " ({$progress}%)\r";
flush();
}
}
// Open file for writing
$fp = fopen($savePath, 'w+');
// Initialize cURL
$ch = curl_init($fileUrl);
curl_setopt($ch, CURLOPT_TIMEOUT, 0); // Remove the timeout
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progressCallback');
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
// Execute the request
$data = curl_exec($ch);
// Check for errors
if (curl_errno($ch)) {
echo 'Error: ' . curl_error($ch);
} else {
echo "\nFile saved successfully to: " . $savePath;
}
// Close cURL handle
curl_close($ch);
// Close file handle
fclose($fp);
اگر نیاز به آموزشهای بیشتری در ارتباط با PHP دارید در بخش نظرات این نوشته برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]


















امنیت این روش در برابر لینکای مشکوک خوبه؟
بهتر است با احتیاط بیشتری از این آموزش استفاده کنید.
روی هاستایی که محدودیت max_execution_time دارن این باز کار میکنه؟
خیر.
اگه فایل خیلی بزرگ باشه، این اسکریپت باز جواب میده؟
بله تفاوتی ندارد.
این روش دانلود برای همه سرورا جواب میده؟
بله تفاوتی ندارد اگر سرور شما از php پشتیبانی کند تفاوتی خاصی ندارد.
متشکر از کد
موفق باشید.