فایل header.php پوسته وردپرس

بسیاری از سرویس نگهداری و اشتراک گذاری فایل برای کاربرانی که به صورت رایگان قصد دانلود فایل‌ها را دارند محدودیت‌هایی همانند محدود کردن سرعت دانلود فایل مورد نظر تعیین می‌کنند و از این طریق کاربران و بازدید کنندگان را به خرید حساب کاربری پولی و یا همان ویژه در سایت خود تشویق می‌کنند. اما اگر شما نیز به هر دلیلی نیاز به محدود سازی سرعت دانلود از سرور سایت خود توسط کاربران را دارید در این آموزش تورتک با چگونگی انجام این کار آشنا می‌شویم.

لیست پیش نیاز و مراحل محدود کردن سرعت دانلود فایل توسط PHP

برای محدود سازی سرعت دریافت اطلاعات از سرورهاست سایت شما توسط PHP به موارد مختلفی نیاز داریم که با تمامی این پیش نیازها در لیست زیر آشنا می‌شویم. توجه داشته باشید نبود و یا رعایت نکردن هر یک از این موارد ممکن است باعث نمایش خطا به کاربران در هنگام دانلود فایل و یا باعث به وجود آمدن راه‌هایی شود که کاربران با استفاده از آن‌ها توانایی دانلود فایل مورد نظر با حداکثر سرعت ممکنه داشته باشند.

  1. ساخت فایل به صورت مجازی از روی فایل مورد نظر برای دانلود توسط کاربران به این دلیل که کاربران با استفاده از برنامه مدیریت دانلود به آدرس اصلی فایل برای دسترسی مستقیم و دانلود آن با حداکثر سرعت ممکنه دسترسی پیدا نکنند.
  2. باز بودن توابع کار با فایل‌ها همانند fopen، fread و … برای دسترسی به محتوای فایل و در اختیار گذاشتن تدریجی آن به کاربرانی که قصد دانلود آن را دارند.
  3. امکان دسترسی به تابع Header زبان PHP درهاست شما برای ارسال Header مورد نیاز در پاسخ به درخواست دانلود کاربران که خوشبختانه در اکثرهاست اشتراکی نیز امکان استفاده از این تابع وجود دارد.
  4. بهتر است از این تکنیک تنها برای فایل‌هایی که کمتر از 100 مگابایت حجم دارند استفاده کنید تا از فشار کاری بیش از حد بر روی سرور سایت شما و زمان درگیر بودن CPU کاسته شود. برای فایل سنگین‌تر می‌توانید از پرسنل شرکت ارائه خدمات‌هاست و یا سرور خود درخواست فضای جداگانه ای در سرور سایت خود دهید که در آن حداکثر سرعت تبادل اطلاعات محدود شده باشد و به کاربران ویژه سایت خود توانایی دسترسی به فایل در سرور اصلی با سرعت بالا را دهید.

در کدهای معرفی شده در این آموزش سعی می‌کنیم تمامی موارد ذکر شده در لیست بالا را رعایت کنیم تا نتیجه نهایی در سایت شما با بهترین کیفیت ممکن عمل کند. البته پیشنهاد می‌کنیم برای استفاده از این کدها و محدود سازی سرعت دانلود فایل درهاست سایت خود با توجه به ساختار سایت یا وبلاگ خود کدهای PHP زیر را ویرایش و شخصی سازی کنید. برای شروع کار کافی است یک فایل با پسوند PHP درهاست خود ایجاد کنید و سپس از کدهای زیر برای محدود سازی سرعت دانلود فایل مورد نظر استفاده کنید. توجه داشته باشید در مثال زیر ما از فایل مشخصی استفاده کرده‌ایم اما اگر شما می‌خواهید فایل ساخته شده توانایی کار بر روی هر فایل دیگری را نیز درهاست شما داشته باشد می‌توانید از متغیر مربوط به دریافت و استفاده از اطلاعات ارسال شده توسط فرم وب همانند $_REQUEST، $_POST استفاده کنید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$local_file = 'main-file.zip';
$download_file = 'download-name.zip';
$download_rate = 20;
if(file_exists($local_file) && is_file($local_file)) {
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: '.filesize($local_file));
header('Content-Disposition: filename='.$download_file);
flush();
$file = fopen($local_file, "r");
while (!feof($file)) {
print fread($file, round($download_rate * 1024));
flush();
sleep(1);
}
fclose($file);
}
else {
die('Error: The file '.$local_file.' does not exist!');
}

به همین سادگی و تنها با استفاده از همین چند خط کد سرور سایت شما به صورت تدریجی و مقدار اطلاعاتی که شما تعیین کرده‌اید و یا همان سرعت تبادل اطلاعات که در کد بالا 20 کیلوبایت تعیین شده است در هر ثانیه فایل مورد نظر را در اختیار کاربران قرار می‌دهند. توجه داشته باشید به جای main-file.zip باید نام و آدرس فایل مورد نظر در سرور سایت خود را وارد کنید، به جای download_file نام فایل مجازی که به کاربر ارسال می‌شود و به جای download_rate حداکثر سرعت در اختیار گذاشتن اطلاعات در هر ثانیه به واحد کیلوبایت تعیین کنید.