Thaimisc.com : เล่นกับไฟล์ (5)
ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us | Colocation | Web Hosting | เปิดร้านค้าฟรี


Category : Php Developer Print Article Only Print Aticle With Comment
เล่นกับไฟล์ (5)
เขียนโดย เดอะกาฝากไดอารี่ (channelv_on_mobile@hotmail.com) , 19-09-2004

อดหลับอดนอนไป 2 คืนเต็มๆ ฮะ คืนแรกคุยโทรศัพท์เพลินถึงเช้า แล้วไปทำงานต่อเลย คืนต่อมาปาร์ตี้ฉลองครบรอบ 5 ปี Thaimisc.com กลับถึงบ้านตี 5 พอดี เหอๆ (ลูกที่ดีจริงๆ เลยผม) วันนี้ตื่นสาย ไม่ได้อัพเดตไดอารี่หนักกบาลของตัวเอง ไม่เป็นไร มาอัพเดตบทความ PHP เราต่อดีกว่า

แนวคิดของการทำ log file
ในตอนที่แล้ว เราได้ลองสร้าง และบันทึกข้อมูลลงไปในไฟล์ .txt แล้ว โดยตัวอย่างที่ผมนำเสนอไป ถึงเป็นแนวทางหนึ่ง ในการทำไฟล์ประเภท log file ซึ่งมีไว้เพื่อเก็บข้อมูลอะไรบางอย่าง สำหรับเอาไว้ตรวจสอบภายหลังโดยผู้มีอำนาจในระบบ

ยกตัวอย่างเช่น ผมพัฒนาเว็บแอปพลิเคชั่นเกี่ยวกับการเก็บข้อมูลพนักงานภายในบริษัท ซึ่งในแอปพลิเคชั่นตัวนี้จะมีผู้ใช้งานหลายคน ในแต่ระดับกันไป เช่น ระดับพนักงานทั่วไป ก็สามารถที่จะเข้ามาดูรายละเอียดข้อมูลได้เฉยๆ แต่ถ้าเป็นระดับผู้จัดการ หรือพนักงานในฝ่ายบุคคล ก็จะมีสิทธิ์ในการแก้ไขข้อมูลได้ด้วย

log file นั้นจะช่วยได้มาก ในเรื่องของการจัดเก็บบันทึกครับ บันทึกที่ว่าคือ บันทึกว่าใคร ไปทำอะไรที่ไหน อย่างไร ทำอะไรไว้บ้าง กี่โมงกี่ยาม วันที่เท่าไหร่... อันนี้จะช่วยได้มาก ในกรณีที่แอปพลิเคชั่นของเราเกิดปัญหาขึ้น ในกรณีที่มีใครต่อใครแอบไปสับเปลี่ยน หรือแก้ไขข้อมูลโดยมิชอบ หรือเกิดขึ้นโดยไม่ได้เจตนา เราจะได้ตามหา และแก้ไขได้ในภายหลัง

วิธีง่ายที่สุดในการตรวจสอบก็คือ การสร้างไฟล์ .txt ขึ้นมาบันทึกข้อความนั่นเอง (และก็เป็นวิธีที่เก่าแก่ด้วย)

ในตอนที่แล้วเราได้ลองเปิด และลองบันทึกข้อมูลลงไปในไฟล์แล้ว แต่การเปิดนั้นผมใช้โหมดเป็น w+ ซึ่งหมายความว่า ข้อมูลจะถูกลบจากไฟล์ทุกครั้ง ซึ่งไม่เหมาะกับการทำ log file ที่ต้องการเก็บข้อมูลเก่าเอาไว้ แล้วเพิ่มข้อมูลใหม่เข้าไป ดังนั้นหากเราลองแก้ไขโค้ดเมื่อตอนที่แล้วเป็นแบบนี้ (สังเกตโค้ดดีๆ จะเห็นว่า ผมเปลี่ยนข้อความที่จะบันทึกจากเดิมคือ "ข้อความที่ 1" เป็น "ข้อความที่ 2")

<?php

$filename = "weblog.txt"; //กำหนดชื่อไฟล์
$handle = fopen($filename, "w+"); //เปิดไฟล์
$text = date(d. "/". m. "/". Y. " ". H. ":". i. ":". s). " ข้อความที่ 2"; //เปลี่ยนข้อความที่จะบันทึก
$write = fwrite($handle, $text); //บันทึก
if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }
fclose ($handle); //ปิดไฟล์

?>

แล้วลองรันใหม่ดู เราจะพบว่า ในไฟล์ weblog.txt นั้น แทนที่จะปรากฏคำว่า "ข้อความที่ 2" แทน ครับ... ดังนั้นการเปิดแบบ w หรือ w+ ก็ไม่สามารถใช้ในการทำ log file ได้... เราต้องใช้ a หรือ a+ ครับ ซึ่งความแตกต่างก็คือ a นั้นจะเปิดเพื่อเขียนอย่างเดียว ส่วน a+ จะเปิดเพื่อที่จะใช้อ่าน และเขียนได้

งั้นเราลองเขียนโค้ดนี้ขึ้นมา เซฟเป็นไฟล์ชื่อ write02.php แล้วลองรันดูใหม่อีกที

<?php

$filename = "weblog.txt"; //กำหนดชื่อไฟล์
$handle = fopen($filename, "a+"); //เปิดไฟล์
$text = date(d. "/". m. "/". Y. " ". H. ":". i. ":". s). " ข้อความที่ 3"; //เปลี่ยนข้อความที่จะบันทึก
$write = fwrite($handle, $text); //บันทึก
if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }
fclose ($handle); //ปิดไฟล์

?>

จากนั้นลองเปิดไฟล์ weblog.txt ขึ้นมาดู เราจะเห็นดังนี้ครับ

สังเกตว่าข้อความมันเขียนต่อเนื่องกัน (จนเกินไป) อาจจะอ่านยากนิดหนึ่งนะครับ เพราะว่า การเขียน มันเขียนแบบต่อเนื่อง... เรามาลองเว้นบรรทัดดู น่าจะอ่านได้ง่ายกว่าจริงไหมครับ?!?

เราจะใส่ rn ซึ่งมาความหมายหมายถึง carriage return (CR หรือ 0x0D (13) ตามรหัส ASCII) และ linefeed (LF หรือ 0x0A (10) ตามรหัส ASCII) เข้าไป... ต้องใส่สองอันนี้ติดกันเลยนะครับ จะได้ความหมายเหมือนกับการกดแป้น Enter บนคีย์บอร์ดครับ

<?php

$filename = "weblog.txt"; //กำหนดชื่อไฟล์
$handle = fopen($filename, "a+"); //เปิดไฟล์
$text = "rn". date(d. "/". m. "/". Y. " ". H. ":". i. ":". s). " ข้อความที่ 4"; //เปลี่ยนข้อความที่จะบันทึก
$write = fwrite($handle, $text); //บันทึก
if (!$write) { echo "ไม่สามารถสร้างไฟล์ได้"; }
else { echo "สร้างไฟล์เรียบร้อย"; }
fclose ($handle); //ปิดไฟล์

?>

จากนั้นลองรัน แล้วเปิดไฟล์ weblog.txt ดูใหม่

เห็นไหมครับ คราวนี้ข้อความที่ 4 ก็ถูกขึ้นบรรทัดใหม่เรียบร้อยแล้ว :)

(ติดตามตอนต่อไป)

<- Back | Next ->

ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us
Copyright 1999-2006 Thailand Miscellaneous. Allrights reserved. webmaster@thaimisc.com