ในการดาวน์โหลดไฟล์ขนาดใหญ่ผ่านสคริปต์ 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' ในท้ายที่สุด ฟังก์ชันจะคืนค่า 'สถานะ'