ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingใช้คำสั่งอะไรหาพื้นที่การใช้งานของแต่ละ directory ของสมาชิกดีครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ใช้คำสั่งอะไรหาพื้นที่การใช้งานของแต่ละ directory ของสมาชิกดีครับ  (อ่าน 1303 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
okgofun
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 396



ดูรายละเอียด
« เมื่อ: 10 ธันวาคม 2007, 14:01:47 »

ใช้คำสั่งอะไรหาพื้นที่การใช้งานของแต่ละ directory ดีครับ Kiss

คือผมทำระบบที่ให้สมาชิกโพสต์รูปหรือเก็บข้อมูลต่างๆเอาไว้ซึ่งก็จะเก็บเอาไว้ใน folder ของสมาชิกคนนั้นๆเอง

เมื่อก่อนผมจะใช้ exec ร่วมกับ php ในการส่งคำสั่งไปให้ server ตรวจสอบพื้นที่การใช้งานจริงๆเลย ซึ่งมันก็ดีมากๆครับ เร็วดี


แต่.. ตอนนี้ host ไม่ให้ใช้ exec แล้วครับ ผมเลยนึกออกแค่วิธีเดียวเป็นวิธีเก่าที่เคยทำมาคือวนลูปตรวจสอบขนาดไฟล์ต่างๆใน folder สมาชิกด้วยคำสั่ง filesize เอาแล้วค่อยมารวมแล้ว save ผลลัพย์เก็บไว้

แต่ว่า ถ้า folder สมาชิกมีหลายพัน folder แถมยังมี folder ย่อยต่างๆอยู่ใน folder หลักอีก ถ้าวนลูปเช็คด้วย filesize ระบบมันจะโหลดหนักเกินไปหรือปล่าวครับ


พอจะมีวิธีอื่นอีกใหมครับ  Tongue
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,887



ดูรายละเอียด
« ตอบ #1 เมื่อ: 10 ธันวาคม 2007, 15:18:12 »


โค๊ด:
$path = "gal";
echo "Folder $path = ".filesize_r($path)." bytes";
 
function filesize_r($path){
  if(!file_exists($path)) return 0;
  if(is_file($path)) return filesize($path);
  $ret = 0;
  foreach(glob($path."/*") as $fn)
    $ret += filesize_r($fn);
  return $ret;
}

recursive function ครับ ...
ส่วนหนักเครื่องมั้ย ต้องลอง load test ดูครับ

บันทึกการเข้า

okgofun
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 396



ดูรายละเอียด
« ตอบ #2 เมื่อ: 10 ธันวาคม 2007, 15:49:01 »


โค๊ด:
$path = "gal";
echo "Folder $path = ".filesize_r($path)." bytes";
 
function filesize_r($path){
  if(!file_exists($path)) return 0;
  if(is_file($path)) return filesize($path);
  $ret = 0;
  foreach(glob($path."/*") as $fn)
    $ret += filesize_r($fn);
  return $ret;
}

recursive function ครับ ...
ส่วนหนักเครื่องมั้ย ต้องลอง load test ดูครับ



เอ่อ ถ้าสมาชิก 1 คนมีการใช้งานพื้นที่ประมาณ 20 mb. ขึ้นไปหละครับ แล้วระบบแบบวนลูปเช็คขนาดไฟล์มันจะ timeout ใหมครับ ผมใช้ Tongue
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
okgofun
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 396



ดูรายละเอียด
« ตอบ #3 เมื่อ: 10 ธันวาคม 2007, 16:07:08 »

 Smiley อ่า ที่ผมทดสอบดูใน localhost เร็วมากเลยครับ 30 กว่า mb. แป๊บเดียวเช็คเสร็จ รู้สึกว่าใช้ glob จะเร็วกว่า opendir มากๆเลย

ขอบคุณครับ Cheesy
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 10 ธันวาคม 2007, 18:47:35 »

ผมว่าสร้าง db ส่วนหนึ่งไว้เก็บข้อมูลดีกว่านะครับ
แบบเวลาอัพก็ตรวจขนาดแล้วก็บันทึกเพิ่ม เวลาลบไฟล์ก็ตรวจแล้วหักออก

ผมว่าจะดีกว่านะ เพราะยังไงคงไม่เปิด ftp ให้อยู่แล้ว
ก็น่าจะเป็นการอัพผ่าน php   :Smiley
บันทึกการเข้า

ColdMoney
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 200
ออฟไลน์ ออฟไลน์

กระทู้: 12,622



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 10 ธันวาคม 2007, 22:05:24 »

เปลี่ยนโฮสครับ  Cheesy Cheesy
บันทึกการเข้า

thenetxx
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 1,986



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 12 ธันวาคม 2007, 21:36:49 »

เท่าที่เคยทำ วนลูปแล้วนับเพิ่ม ไม่เหนื่อยเท่าไรครับ

เพราะไฟล์ในโฟลเดอร์ น่าจะเป็นหลักร้อย Server ไม่ได้วนอ่านตลอดเวลา
ผมว่า น่าไม่เป็นปัญหานะครับ

ps. ไม่ให้ exec คงโดนเจาะมาอะครับ ก็คงต้องใจเค้าใจเราครับ
บันทึกการเข้า

Develop site but can't develop life
ASIA
หน้า: [1]   ขึ้นบน
พิมพ์