ในการดาวน์โหลดไฟล์ขนาดใหญ่ผ่านสคริปต์ PHP โค้ดจะเป็นดังนี้ -
ตัวอย่าง
<?php function readfile_chunked($filename,$retbytes=true) { $chunksize = 1*(1024*1024); // how many bytes per chunk the user wishes to read $buffer = ''; $cnt =0; $handle = fopen($filename, 'rb'); if ($handle === false) { return false; } while (!feof($handle)) { $buffer = fread($handle, $chunksize); echo $buffer; if ($retbytes) { $cnt += strlen($buffer); } } $status = fclose($handle); if ($retbytes && $status) { return $cnt; // return number of bytes delivered like readfile() does. } return $status; } ?>
ผลลัพธ์
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
The large file will be downloaded.
ฟังก์ชัน 'readfile_chunked' (กำหนดโดยผู้ใช้) มีสองพารามิเตอร์ - ชื่อของไฟล์และค่าเริ่มต้นของ 'จริง' สำหรับจำนวนไบต์ที่ส่งคืนหมายความว่าดาวน์โหลดไฟล์ขนาดใหญ่สำเร็จแล้ว ตัวแปร 'chunksize' ได้รับการประกาศด้วยจำนวนไบต์ต่ออันที่จำเป็นต้องอ่าน ตัวแปร 'buffer' ถูกกำหนดให้เป็น null และ 'cnt' ถูกตั้งค่าเป็น 0 ไฟล์ถูกเปิดในโหมดการอ่านไบนารีและกำหนดตัวแปร 'handle'
จนกว่าจะถึงจุดสิ้นสุดของไฟล์ "จัดการ" ในขณะที่ลูปจะทำงานและอ่านเนื้อหาของไฟล์ตามจำนวนชิ้นส่วนที่ต้องอ่าน ถัดไปจะแสดงบนหน้าจอ หากค่าของ 'retbytes' (พารามิเตอร์ตัวที่สองของฟังก์ชัน) เป็นจริง ความยาวของบัฟเฟอร์จะถูกเพิ่มลงในตัวแปร 'cnt' มิฉะนั้น ไฟล์จะถูกปิดและคืนค่า 'cnt' ในท้ายที่สุด ฟังก์ชันจะคืนค่า 'สถานะ'