GORAGOD.com

การเขียน PHP เพื่อดาวน์โหลดไฟล์บน Server Nginx

ความสามารถของ Server Nginx ที่สามารถใช้ทรัพยากรได้คุ้มค่ากว่่า Apache ทำให้ Nginx ถูกเลือกเพื่อใช้งานกับเว็บที่มีจำนวนผู้ใช้มหาศาล เช่น facebook (มีบางช่วงที่เปิด facebook แล้วพบข้อความว่า Welcome to nginx นั่นแหละครับที่แสดงว่าเขากำลังติดตั้ง Server ตัวนี้อยู่) โดยเฉพาะการดาวน์โหลดไฟล์เพื่อให้รองรับผู้ใช้จำนวนมากขึ้น การใช้ Server Nginx จะทำได้ดีกว่าครับ และนอกจากนี้ Nginx ยังมี X-Accel-Redirect ซึ่งเป็นความสามารถในการส่งต่อไฟล์ดาวน์โหลดไปยัง Server โดยตรงหลังจากส่งคำสั่งจาก PHP ไปยัง Server ทำให้เราไม่ต้องเสีย Process 2 ต่อไปกับ PHP และการดาวน์โหลดไฟล์จาก Server อีกต่อไป

การใช้งานคำสั่งนี้บน Server ก็แสนง่ายนะครับ (ไฟล์นี้ต้องรันบน Server Nginx ที่สามารถประมวลผล PHP ได้นะครับ)
<?php
  // ชื่อไฟล์ที่ต้องการเมื่อดาวน์โหลด
  $filename = 'test.avi';

  // path ที่เก็บไฟล์บน Server
  $file = '/path/to/source.avi';

  // กำหนด header สำหรับชื่อไฟล์
  header("Content-Disposition: attachment;filename=$filename");

  // กำหนด header สำหรับการดาวน์โหลดไฟล์

  header('Content-Type: application/octet-stream');

  // ส่งต่อไฟล์ดาวน์โหลดไปยัง Server

  header("X-Accel-Redirect: /$file");

?>