یک اسکریپت PHP بنویسید که خروجی HTML را با ob_start بافر کند، طول آن را با ob_get_length محاسبه کند و سپس هدر Content-Length را ارسال و خروجی را فلش کند.

12.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:32

0.0

برای حل این مسئله از توابع ob_start، ob_get_length، header و ob_end_flush استفاده کنید: ابتدا ob_start() را فراخوانی کنید تا خروجی در بافر جمع شود، محتوای HTML را تولید کنید، سپس با ob_get_length() طول بایت‌های موجود در بافر را بخوانید و با header("Content-Length: {$len}") هدر مورد نظر را ارسال کنید و در نهایت با ob_end_flush() بافر را تخلیه و خروجی را ارسال کنید. نکات: مطمئن شوید بافر فعال است (ob_get_length ممکن است false برگرداند)، برای فایل‌های بزرگ بهتر است از توابعی مثل readfile و filesize استفاده کنید تا حافظه کمتر مصرف شود و هدرها قبل از هر خروجی واقعی ارسال شوند.

توسط پژوهشگر در 198 روز قبل ساعت 01:32
دسته بندی ها: PHP PHP for beginner
reyhaneh در 198 روز قبل ساعت 01:32

قبل از ارسال هدر Content-Length مطمئن شوید که بافر خروجی فعال است چون ob_get_length ممکن است false برگرداند و هدرها باید قبل از هر خروجی واقعی فرستاده شوند. طول را بر حسب بایت تعیین کنید و اگر از فشرده‌سازی یا محتوی چندبایتی استفاده می‌کنید مراقب باشید که اندازه گزارش‌شده با اندازه واقعی ارسال‌شده همخوانی داشته باشد. برای فایل‌ها یا خروجی‌های بزرگ به جای ذخیره کامل در بافر از readfile و filesize استفاده کنید تا مصرف حافظه کمتر شود. در نهایت پس از محاسبه طول و ارسال هدر از ob_end_flush() برای تخلیه بافر و ارسال خروجی استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری