เกี่ยวกับชื่อของไฟล์
ไม่เข้าใจว่าใช้ฟังชั่นไหนคอนเวิท
เวลาจะสร้างไฟล์.txt
ให้มีชื่อเป็นภาษาไทย
เพราะใช้ $fp=fopen($File,'w'); //ถ้ามีเขียนทับ ถ้าไม่มีสร้างใหม่
มันดันออกมารูปแบบนี้
ส่วน urlencode() มันออกมาแบบนี้ ไม่ตรงกับความต้องการ
อย่างให้มันเขียนออกมาเป็นแบบนี้
เวลาจะสร้างไฟล์.txt
ให้มีชื่อเป็นภาษาไทย
เพราะใช้ $fp=fopen($File,'w'); //ถ้ามีเขียนทับ ถ้าไม่มีสร้างใหม่
มันดันออกมารูปแบบนี้
บันทึà¸à¸à¸²à¸£à¸žà¸±à¸’นา.txt
ส่วน urlencode() มันออกมาแบบนี้ ไม่ตรงกับความต้องการ
%E0%B8%9A%E0%B8%B1%E0%B8%99%E0................
อย่างให้มันเขียนออกมาเป็นแบบนี้
บันทึก.txt
จะว่าไปก็ไม่ถูกทีเดียวนัก บาง Server ก็สร้างได้ ยกตัวอย่าง Server ที่เป็น Windows แต่ถ้าเป็น Linux มักจะไม่ค่อยได้
ปัจจุบันผมไม่สร้างชื่อไฟล์ภาษาไทยแล้ว...เพื่อหลีกเลี่ยงข้อจำกัดบน Server
ถ้าอยากจะใช้จริงๆ พอมีวิธีีทำเหมือนกัน แต่ไม่รับรองผลว่าจะใช้งานได้กับ Server ทุกแห่ง
วิธีแรก แปลงตัวอักษร ให้ทดลองดูว่าจะแปลจาก UTF-8 เป็น TIS-620 หรือ TIS-620 เป็น UTF-8 ด้วย iconv()
วิธีที่ 2 ชัวร์กว่า แต่เหมาะกับการทำดาวน์โหลด มากกว่าการเก็บไฟล์ที่เป็นชื่อไทย
หลักการก็คือ อย่างแรก ให้เก็บไฟล์ในรูปรหัส เช่น เข้ารหัสชื่อไฟล์ด้วย md5 หรืออาจสุ่มชื่อเอาก็ได้ ชื่ไฟล์ไม่มีประโยชน์อะไร ใช้แค่บันทึกลงบน Server เท่านั้น
อย่างที่ 2 เก็บชื่อไฟล์ ภาษาไทยหรืออะไรก็ตามลงบน db และเก็บชื่อไฟล์ที่บันทึกลงบน Server ตามข้อ 1 ลงบน db ด้วย
อย่างที่ 3 การดาวน์โหลดไฟล์ให้กระทำผ่านหน้าดวน์โหลด เพราะถ้าเรียกไฟล์ตรงๆ จะได้รหัสที่อ่านไม่รู้เรื่องไป โดยที่หน้าดาวนืโหลด ให้ query เอาชื่อจริงจากฐานข้อมูล มาใช้สำหรับเป็นชื่อไฟล์ดาวน์โหลดได้ ตัวอย่างมีบนเว็บ
อย่างที่คุณอาว่า "ชื่อไฟล์ไม่มีประโยชน์อะไร ใช้แค่บันทึกลงบน Server เท่านั้น"
จริงๆ แล้วตอนนี้ไม่ได้ติดปัญหาจากการทำงานของระบบแต่อย่างใด
เพียงแต่เห็นชื่อไฟล์แล้วมันขัดลูกตา
คงต้องหันไปใช้การเทียบชื่อไฟล์อย่างที่คุณอาว่ามาทั้ง 3 ตัวอย่าง
ไฟล์อันนี้เอาไว้เก็บ cache ฮะ พอแคชแล้ว ก็ยังแพ้ Latency อยู่ดี
เซิร์ฟอืดเป็นเต่า delay มากๆ ดูของคุณอาไม่กี่มิลลิเซคเอง ยิ่งพอแคชแล้ว
ลาเทนซี่แทบเป็นศูนย์ ไว้มากๆ
ขอบพระคุณ "คุณอา gOragod" มากๆ ฮะ