یک اسکریپت PHP بنویسید که با استفاده از stream_copy_to_stream یک فایل بزرگ روی سرور را با هدرهای مناسب (Content-Type، Content-Disposition، Content-Length) برای دانلود به مرورگر ارسال کند.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:36 0.0
با استفاده از توابع fopen برای باز کردن فایل منبع (با حالت 'rb') و fopen('php://output','wb') برای خروجی و سپس stream_copy_to_stream میتوانید محتوای فایل را بدون بارگذاری کامل در حافظه به کاربر بفرستید؛ قبل از نوشتن خروجی هدرهای مناسب (Content-Type، Content-Disposition، Content-Length و Content-Transfer-Encoding) را ارسال کنید، با ob_get_level/ob_end_clean خروجی بافر شده را پاک کنید، set_time_limit(0) تنظیم کنید و در پایان streamها را ببندید. این روش برای فایلهای بزرگ مناسب است و از readfile یا بارگذاری کامل در حافظه کارآیی و مصرف رم بهتری دارد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از stream_copy_to_stream برای پخش فایلهای بزرگ باعث عدم بارگذاری کامل در حافظه میشود. قبل از ارسال خروجی، مطمئن شوید بافرها پاک شدهاند و هدرها Content-Type، Content-Disposition و Content-Length به درستی تعیین شدهاند. همچنین set_time_limit(0) را فعال کنید و پس از پایان کار، منابع را با بستهای مناسب ببندید تا کارایی و پایداری حفظ شود. در صورت نیاز به قابلیت resume، پشتیبانی از درخواستهای range را پیادهسازی کنید تا دانلود بهتری داشته باشید.
گزارش