PDA

View Full Version : سوال: نحوه ی دانلود فایل با قابلیت چند کانکشن در php



generalhak
شنبه 29 تیر 1392, 15:44 عصر
سلام
در فایل ضمیمه یه بخشی از یه اسکریپت رو قرار میدم که واسه پلاگین دانلود برای وی آی پی بوده
این اسکریپت میاد فایل داخل پوشه فایل رو میخونه و برای دانلود میفرسته
مشکل اینجاست که در حالت مستقیم وقتی میخوای فایل رو دانلود کنی سرعت دانلود زیاد هست و تعداد اتصال ها هم زیاد ...
ولی وقتی میخوای با این اسکریپت دانلود رو انجام بدی تعداد اتصال فقط 2 تا میشه برقرار کرد
و سرعت دانلود هم پایین هست در صورتی که نباید اینطور باشه !
107582
لطفا بگید مشکل از کجاست ... !! ما که سر در نیاوردیم !

Unique
شنبه 29 تیر 1392, 22:48 عصر
اگه داره از header استفاده میکنه طبیعیه که از این مشکلات داشته باشی ! بهترین گزینه x-sendfile هستش.

$ M 3 H R D A D $
یک شنبه 30 تیر 1392, 11:28 صبح
اگه داره از header استفاده میکنه طبیعیه که از این مشکلات داشته باشی ! بهترین گزینه x-sendfile هستش.

میشه این روش و توزیع بدین بیشتر

Unique
سه شنبه 01 مرداد 1392, 22:13 عصر
آقا مهرداد از شما بعیده ! من توی خیلی از پست ها به این روش اشاره کردم ! یک جستجوی ساده بزنید حله.

generalhak
پنج شنبه 03 مرداد 1392, 18:12 عصر
اگه داره از header استفاده میکنه طبیعیه که از این مشکلات داشته باشی ! بهترین گزینه x-sendfile هستش.

ممنون ولی ... با این روش یه مشکل کوچیک دارم !
با روش هدر معمولی وقتی که خوندن فایل تموم میشد و یا قطع میشد (دانلود تموم میشد) یه کاری انجام میداد اسکریپتم* اما اینجوری با این روش از کجا بفهمم کی دانلود قطع شده و یا تموم شده و اون کار رو انجام بدم ؟!
..
* کارش این بود که جلوی اسم کاربری -که موقع اتصال و شروع دانلود آی پی رو ثبت کرده بود- آی پی رو پاک میکرد (هدف این بود که هر کاربر نتونه با بیش از یک آی پی همزمان دانلود کنه)

Unique
جمعه 04 مرداد 1392, 00:00 صبح
من متوجه نمیشم ! شما میخواین مانع بشین که دو نفر با یک نام کاربری همزمان دانلود کنن درسته ؟ یعنی با دو تا ip نشه از سایت استفاده کرد ؟ درسته ؟
خوب چرا این را برای هر دانلود محدود میکنید ! وقتی کاربر لاگین میکنه ip را توی پایگاه ذخیره کنید و مانع بشین با یک ip دیگه بشه با این نام کاربری لاگین کرد ! اینجوری مشکل حل میشه !

generalhak
جمعه 04 مرداد 1392, 12:30 عصر
من متوجه نمیشم ! شما میخواین مانع بشین که دو نفر با یک نام کاربری همزمان دانلود کنن درسته ؟ یعنی با دو تا ip نشه از سایت استفاده کرد ؟ درسته ؟
خوب چرا این را برای هر دانلود محدود میکنید ! وقتی کاربر لاگین میکنه ip را توی پایگاه ذخیره کنید و مانع بشین با یک ip دیگه بشه با این نام کاربری لاگین کرد ! اینجوری مشکل حل میشه !
بله فکر کنم بهترین راه همین باشه .. آخه الان سیستم با جلسه و ... چک نمیکنه یعنی چی وارد شده باشی چی نه میاد رمز و پسورد رو میگیره بعد چک میکنه اگر وجود داشت و اعتبار هم داشت اجازه دانلود میده
ولی از همین راهی که میگید استفاده میکنم بهترین کار هم همین هست ...
ممنون

generalhak
جمعه 04 مرداد 1392, 22:00 عصر
آقا بازم مشکل اصلی حل نشد !
مشکل اصلی این بود که از کجا بفهمم کی دانلود تموم شده چون ثبت آی پی مشکلی نیست مشکل پاک کردن آی پی هست که چه موقع باشه و از روشی که شما گفتید اگر از طریق جلسه بخوام کار کنم و هر وقت جلسه تموم شد بیام آی پی رو پاک کنم بعد شاید هنوز کاربر در حال دانلود باشه !
حالا سوال اینجاست که از کجا بفهمم کی دانلود تموم شده که آی پی رو پاک کنم ؟! اتصال کاربر رو چطوری بررسی کنم که هر وقت قطع شد آی پی رو پاک کنه؟!

generalhak
جمعه 04 مرداد 1392, 22:36 عصر
اون چیزی که شما گفتید یه کدی هست شبیه این

<?php
$file = '/tmp/blah/foo.iso';
$download_name = basename($file);
if (file_exists($file)) {
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$download_name);
header('X-Sendfile: '.$file);
exit;
}
?>
قبلا یه وایل بود که صفحه همش کار انجام میداد بعد هر وقت که خوندن فایل تموم میشد و فایلی که میفرستادیم بسته میشد میومدم آی پی رو پاک میکردم
اما حالا با کد بالا نمیشه همچین کاری کرد چون صفحه یک بار پردازش میشه و تموم...
حالا تکلیف چیه !!؟

Unique
جمعه 04 مرداد 1392, 22:53 عصر
از کجا بفهمم کی دانلود تموم شده که آی پی رو پاک کنم ؟ اتصال کاربر رو چطوری بررسی کنم که هر وقت قطع شد آی پی رو پاک کنه؟!

به روشی که من گفتم شما نیاز ندارین ip را برای هر دانلود ثبت کنید و فقط در زمان لاگین چک میکنید که دو نفر از یک نام کاربری استفاده نکنند ! در مورد نموم شدن فایل هم باز هم به شما مربوط نمیشه ! نیاز نیست کاربر را logout کنین یا ip پاک کنین ! فایل داره براش ارسال میشه و اون دریافت میکنه ، حالا اگه فایلش نصفه دانلود بشه و از زمان ۳۰ دقیقه session شما هم گذشته باشه ! و در واقع auto logout شده باشه ! دوباره لاگین میکنه و با resume و کلیک روی همون فایل ادامش را میگیره !

generalhak
جمعه 04 مرداد 1392, 23:15 عصر
به روشی که من گفتم شما نیاز ندارین ip را برای هر دانلود ثبت کنید و فقط در زمان لاگین چک میکنید که دو نفر از یک نام کاربری استفاده نکنند ! در مورد نموم شدن فایل هم باز هم به شما مربوط نمیشه ! نیاز نیست کاربر را logout کنین یا ip پاک کنین ! فایل داره براش ارسال میشه و اون دریافت میکنه ، حالا اگه فایلش نصفه دانلود بشه و از زمان ۳۰ دقیقه session شما هم گذشته باشه ! و در واقع auto logout شده باشه ! دوباره لاگین میکنه و با resume و کلیک روی همون فایل ادامش را میگیره !
چیزی که شما میگید و من ازش فهمیدم اینطوریه :
مثلا وقتی کسی میخواد لاگین کنه اگرقبلا کسی وارد نشده بود با نام کاربری و یا آی پی اون فرد با این شخص یکی بود بزاره وارد بشه
خوب تا اینجا درست اما مثلا من میام وارد میشم بعد یه فایل 1 گیگی میزارم رو دانلود که مثلا 5 ساعت طول میکشه
بعد از 30 دقیقه دیگه کسی لاگین نیست و اون شخص داره فایل رو دانلود میکنه
بعد یکی دیگه هم میاد با یه آی پی دیگه و با همون نام کاربری میاد فایل رو دانلود میکنه !
اینطوری کباب میتونه بسوزه ! یعنی راه تقلب در این روش باز هست !
درسته ؟!