-->
http://www.islet.ir/

ارسال فایل با استفاده از ماژول X-SendFile

هم‌خوان کنید در:

به‌طورمعمول وقتی می‌خواهید اجازه‌ی دانلود فایلی را به کاربر بدهید، آن فایل را دریکی از پوشه‌های واقع در دایرکتوری وب Apache قرار می‌دهید و مابقی کار را وب سرور برای شما انجام خواهد داد. کاربر روی لینک مستقیم فایل کلیک می‌کند و دانلود آغاز می‌شود.

ارسال فایل با استفاده از PHP

فرض کنید که می‌خواهید یک سایت فروش موزیک یا ارسال فایل بسازید! قطعاً لازم است قبل از اینکه امکان دانلود موزیک‌ها برای کاربر فراهم شود، چک کنید که آیا کاربر در سایت ثبت‌نام کرده یا هزینه‌ی موزیک موردنظر را پرداخت کرده است یا خیر و مواردی ازاین‌دست.

اگر فرض کنیم که در طرف سرور از PHP به‌عنوان تأمین‌کننده‌ی فایل برای کاربر استفاده می‌کنید، کدی شبیه این خواهید داشت:

به این مفهوم که PHP فایل را می‌خواند، header های مناسب را ایجاد کرده و درنهایت فایل را روی بافر خروجی ارسال می‌کند.

ارسال فایل با استفاده از ماژول X-SendFile

بهتر نبود اگر به وب سرور می‌گفتیم که کدام فایل را باید ارسال کند و بقیه‌ی کارها رو خودش انجام می‌داد؟ خبر خوب این است که می‌توانید این کار را با فعال کردن ماژول mod_xsendfile به‌راحتی انجام دهید.

نکته‌ای که بد نیست بدانید این است که این تکنیک از قابلیت‌های موجود در Lighttp وام گرفته‌شده است و اگر از NGinx استفاده می‌کنید باید از ورودی متفاوتی به نام X-Accel-Redirect بهره بگیرد.

نصب ماژول mode_xsendfile بر روی سرویس‌دهنده‌ی Ubuntu به شکل زیر است:

پیکربندی ماژول بسیار ساده است. خطوط زیر را در انتهای فایل پیکربندی Apache وارد کنید:

به‌منظور عملیاتی شدن ماژول، سرویس Apache را یک‌بار خاموش و روشن کنید:

پس از فعال کردن ماژول mode_xsendfile، با تنظیم ورودی X-SendFile در بخش header و ارسال آن، بقیه کارها را سرویس‌دهنده برای شما انجام خواهد داد:

همان‌طور که مشاهده می‌کنید، دیگر نیازی به خواندن و نوشتن دستی محتوای فایل بر روی بافر نیست. حتی نیازی نیست که وجود یا عدم وجود فایل را بررسی کنید. کارهای پیچیده را خود Apache برعهده ‌گرفته است.


هم‌خوان کنید در:
سهیل صمدزاده

سهیل صمدزاده

من سهیل صمدزاده؛ مشاور چابک سازی گروه‌های نرم‌افزاری، توسعه‌دهنده، مدیر محصول نرم‌افزاری و وبلاگ نویس هستم. به فنّاوری و تفکرات چابک در توسعه نرم‌افزار علاقه‌مندم و سعی می‌کنم در اینجا خُرده دانش‌هایم را با شما به اشتراک بگذارم.


دیدگاه‌های شما ارزشمند‌اند...

اولین نفری باشید که دیدگاه می‌گذارد.

خبر بده وقتی
avatar
1024

وی‌پی‌دیسکاز

به کانال تلگرام آیلِتـــ بپیوندید!

t_logo

آیلِتـــ هر ماه در صندوق ایمیل شما: