دوستان بهترین راه برای ساخت لینک زماندار چی هست؟
لینک طوری باشه که با idm اگر pause کردیم از اول شروع نکنه.
فایل ها سنگین هستن در حد x گیگ
@MOHAMMAD026_1
@MR-S
به نظر خودم فایل های اصلی خارج از public_html باشن و موقع دانلود با اسم جدید کپی منتقل بشه به public_html و با cronjobs بعد یه مدت حذف بشه. راه بهتری سراغ دارید؟
چند تا روش هست
یه روش اینه که لینک های دانلود رو با php هندل کنی و اطلاعات رو به سمت مرورگر ارسال کنی. idm برای ادامه دانلود، یه هدر با اسم Range حاوی مقادیر شروع و پایان فایل به بایت، به سمت سرور ارسال میکنه. مثلا idm میگه از بایت 0 تا 5000 یک فایل رو میخام (این روش باعث میشه امکان pause و resume باشه)
این روش چون با php هست، فشار زیادی میاره. مخصوصا توی دانلود های سنگین یا تعداد بالا. بنابراین توصیه نمیشه
یک روش دیگه اینه که از طریق symlink، یک آدرس رو به یک فایل مقصدی لینک کنی (symlink، همون مثل شورت کات ویندوز هست)
در این روش، باید حذف symlink برای اکسپایر لینک، توسط کرون جاب مدیریت بشه
(البته اینکه وب سرور symlink رو دنبال کنه تا به لوکیشن اصلی برسه و فایل رو بخونه، بستگی به تنظیمات وب سرور و تنظیمات امنیتی سرور داره ولی معمولا جواب میده)
یک روش دیگر، ساخت پوشه alias از طریق htaccess هست
نمونه کد:
Apache config:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^virtual-folder/(.*)$ folder/$1 [QSA]
</IfModule>
بجای virtual-folder، یک هش یکتا مخصوص دانلود اون سفارش کاربر میزاری
مثلا با کد زیر:
Apache config:
RewriteEngine On
RewriteRule ^ds5d4s564ds54d5d45s4d5sd45/(.*)$ orginal-path/$1 [QSA]
همچین لینکی میشه باهاش تولید کرد:
هر دفعه میخای لینک جدید بسازی، با php، فایل htaccess رو ادیت میکنی و یه خط جدید به آخر فایل اضافه میکنی
Apache config:
RewriteEngine On
RewriteRule ^ds5d4s564ds54d5d45s4d5sd45/(.*)$ orginal-path/$1 [QSA]
RewriteRule ^g3hgg6h54fd656sg5d5g6d5g6dfdsf56f/(.*)$ orginal-path/$1 [QSA]
واسه مدیریت این هم باید از کرون جاب و regex برای تشخیص هش یکتا کاربر استفاده کنی
روش دوم و سوم بنظر من خیلی بهتره و جوابگو هست
اگر روش دوم بخاطر تنظیمات سرور یا وب سرور جواب نده، روش سوم حتما جواب میده
فقط باید هاست دانلودی تهیه کنی که وب سرورش apache یا لایت اسپید باشه (چون معمولا nginx هستن)
توی روش سوم، حتما سعی کن یجور کد بزنی که موقع ادیت htaccess، فایل رو از نظر syntax خراب نکنه که باعث از کار افتادن کل لینک ها بشه
همچنین شاید نیاز باشه که هاست دانلود، امکان اجرا php داشته باشه (هم برای قضیه اکسپایر کردن لینک ها با php و هم برای قضیه ساخت لینک). گرچه میتونی از هاست اصلی سایت بصورت ریموت با هاست دانلود ارتباط برقرار کنی
واسه اکسپایر کرد توی روش سوم، نیاز نیست هش کاربر رو جایی ذخیره کنی. میتونی جلوی هر رول، توی قسمت کامنت، اطلاعات بنویسی. مثلا:
Apache config:
RewriteRule ^ds5d4s564ds54d5d45s4d5sd45/(.*)$ orginal-path/$1 [QSA] # User 51 - Order 6750 - Expire On 2020-05-02 12:53:05
بعد اینکه سعی کن برای هر پروژه ات، یه پوشه اصلی جدا در نظر بگیری. مثلا همه ویدیو هات رو داخل یک پوشه مثل orginal-path نریزی و جدا باشه تا هر هش یکتا کاربری، فقط به فایل هایی که خریده دسترسی داشته باشه
این روشی هم که خودت گفتی، غیر استاندارد هست و بنظرم جالب نیست