محمد حسین فریدونی

مشکل شمارش تعداد استفاده از لینک دانلود وقتی کاربر از دانلود منیجر استفاده میکنه

محمد حسین فریدونی اول راه برنامه نویسی

این محتوا بدون نظارت تیم سکان آکادمی تولید شده و صرفاً نظرات شخصی محمد حسین فریدونی می‌باشد.

امروز داشتم روی یک پروژه کار می‌کردم که توی اون باید تعداد دفعه ای که یک لینک دانلود استفاده شده رو ذخیره می‌کردم و نمیذاشتم لینک از یه تعداد مرتبه بیشتر (مثلا ۱۰ مرتبه) استفاده بشه. خب قابلیت پیاده سازی شد و همه چیز به نظر درست میرسید. مرورگر لینک رو دانلود می‌کرد و شمارنده یکی اضافه می‌شد. اما متوجه شدیم که وقتی برای دانلود از اینترنت دانلود منیجر استفاده می‌کنیم شمارنده درست کار نمیکنه. بعد از بررسی فهمیدم که دانلود منیجر به طور هم‌زمان چند ریکوئست رو ارسال میکنه تا سرعت دانلود بیشتری رو داشته باشه. در واقع توی هر ریکوئست قسمت مشخصی از فایل رو دانلود میکنه. با استفاده از فیلد Range در header ها میتونیم از این قابلیت استفاده کنیم. عملا وقتی یک دانلود رو نگه میدارید و دوباره اون رو resume می‌کنید، پشت صحنه این فیلد پر میشه. برای مثال اگر بخوایم از بایت ۱۰۰ تا ۲۰۰ یک فایل رو دانلود کنیم این فیلد در هدر به صورت زیر پر میشه:

Range: bytes=100-200

در حال حاضر راه حلی که من در دست دارم غیر فعال کردن این دانلود های موازیه که البته قابلیت pause و resume کردن رو هم از بین میبره. پس شما هم اگر با این مشکل مواجه شدید باید بین شمارش کاملا دقیق و یا قبلیت ادامه دادن دانلود یکی رو انتخاب کنید. البته که من هنوز دنبال یک راه بهتر هستم و سعی میکنم اگر چیزی پیدا کردم همینجا با شما به اشتراک بذارم.

راه حل من:

من همون قابلیت resume رو برای دانلود منیجر بستم. شما اگر توی پاسختون هدری به صورت "Accept-Ranges" ":" none بفرستید دانلود منیجر به صورت خودکار فقط یک کانکشن برقرار میکنه. امیدوارم این مطلب بهتون کمک کرده باشه

ایدهٔ خود را در سکان‌پلاس بنویسید!

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
daneshvar.ho
daneshvar.ho
۱۳۹۹/۰۹/۰۵
به نظرم میتونستی از کوکی استفاده کنی و بر اساس کوکی چک کنی اگر قبلا برای این دانلود ثبت نکردی عدد دانلود رو ثبت رو انجام بدی، یک کار دیگه تولید یک URL یکتا به ازای دانلود‌هاست