GORAGOD.com

freelance, web developer, web designer, hosting, domain name

ขอความรู้หน่อยคับ php อ่านค่า text file ขนาดใหญ่ 4 gb ได้ไหมคั

คือ ผม อยากเขียน หน้าเวป  อ่านไฟล์  text ขนาด 4 gb เป็นไฟล์ที่เก็บ log คนเข้าใช้งานอินเทอเน็ตครับ

จะเอาข้อมูลแต่ละบรรทัด มา แยกว่า ไอพี นี้ ออกเวปไหน  ออกเวลาอะไร



คือผมลองเขียนแล้วมัน error ว่า    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4097 bytes) in C:\AppServ\www\read2.php on line 14





บรรทัดที่ 14 ผม




13.   $objOpen = fopen ("foder/syslog_20-02-2013.txt", "r"); /*** folder ***/

14.   while ($file = fgets($objOpen,4096))

15.   {

16.    

17.        $arrFile[] = $file;

18.    

19.    }



ผมลองรันดูแล้ว ในไฟล์อื่นๆที่ขนาดน้อยกว่านี้ สามารถรันได้ครับ  อยากทราบวิธีการหรืออาไรก้อได้ที่ทำไห้มันอ่านไฟล์ได้



หรือควรจะเก็บเข้าฐานข้อมูลก่อน  แล้วจึงนำข้อมูลนั้นมาประมวลผล อีกทีครับ   คือไฟล์มันจะมีทุกวัน วันละ 3 4 gb  แล้วต้องทำเป็นเดือนอ่ะครับ 



ช่วยชี้แนะทีครับ
29 พ.ค. 2556 6 3,680

ผมว่าไม่น่าจะได้นะ ไฟล์ 4g เปิดกับ editor ทั่วไปยังกระตุกเรยครับ ไม่งั้นก้ต้องเขียน script อะไรให้ไปอ่านเรื่อยๆนะครับ อย่าให้ครบวัน
#1
#2

ลองแล้วครับ ก้อยังไม่เห็นผล   เหอะๆ  
#3

คำแนะนำ...



ผมไม่รู้ว่าต้องการทำอะไรนะครับแต่จะเป็นไปได้หรือไม่ ที่จะไม่ต้องโหลดไฟล์ทีเดียวทั้งหมด เช่น



อาจโหลดไฟล์ใส่ตัวแปร แค่จำนวนหนึ่ง แล้วส่งกลับ โดยอาจใช้ Ajax ช่วยโหลดทีละ 1000 บรรทัดก็ได้ หรือ



อาจโหลดแค่บรรทัดล่าสุดจำนวนหนึ่งเท่านั้น มาใช้งาน หรือ



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



จริงๆมีอีกหลายวิธีครับ ขึ้นกับความจำเป็นในการใช้งาน แต่โดยหลักการแล้ว แค่เก็บเฉพาะข้อมูลที่ต้องการเท่านั้นครับ



หมายเหตุ php ทำงานกับไฟล์ขนาดใหญ่ได้ครับ และก็ค่อนข้างเร็วด้วย
#4

ขอความรู้หน่อยคับ  php อ่านค่า text file  ขนาดใหญ่ 4 gb ได้ไหมคั
คือ ผมจะ นำ ข้อมูลแต่ ละบรรทัด มาจัดกรุป ครับ ประมาณว่าถ้าเหมือนกัน ให้ กรุ้ป รวมเป้น หนิ่ง 





เลยจำเป็นต้องอ่านทุกบรรทัด เพื่อ นับจำนวนคับ 
#5

ถ้าข้อมูลมากขนดนั้นก็ไม่มีตัวเลือกอื่น นอกจากการเพิ่มหน่วยความจำ เพื่อให้ประมวลผลได้



แต่สิ่งที่ควรทำคือ ทำอย่างไรให้ใช้หน่วยความจำน้อยที่สุด เช่น



1 จัดกลุ่มข้อมูลตั้งแต่ตอนอ่าน เช่น ถ้าต้องการอ่าน IP ที่ไม่ซ้ำกัน ก็รวมไปเลยตั้งแต่ตอนอ่าน

2 อ่านทีละบรรทัด อ่านไปประมวลผลไป ตามข้อ 1

3 เก็บเฉพาะข้อมูลที่ต้องการ เท่านั้น อะไรที่ไม่ใช้กตัดออกไปเลยเพื่อลดหน่วยความจำ

4 ทำทั้งหมดใส่ array ถึงจะทำได้ เตรียมข้อมูลให้เสร็จแล้วค่อย แสดงผล

5 วิธีการเรียงลำดับก็มีผลกับหน่วยความจำ เลือกฟังก์ชั่นให้ถูก จะใช้หน่วยความจำน้อยทีสุด
#6
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^