-
จากหัวข้อ ขอปรึกษาการเรื่องเขียนโปรแกรมของผมหน่อยครับ
ตอนนี้ผมได้ทำสำเร็จในเบื่องต้นแล้วโดยใช้ภาษา Perl เขียนครับ
แล้วตอนนี้ก็มีปัญหาอยู่อีก คือเรื่องการอ่านและเขียนไฟล์ของ Perl อะครับ
ตอนนี้ผมอยากทราบว่าเราสามารถเปิดไฟล์เพื่ออ่านและเขียนในคราวเดียวกันเลยได้ไหม
เพราะจากที่ผมศึกษามานั้น Perl มีโหมดในการทำงานกับไฟล์แค่ 3 โหมด
read mode เปิดไฟล์เพื่อทำการอ่านอย่างเดียว < หรือ ไม่มี
write mode เปิดไฟล์เพื่อทำการเขียน >
append mode เปิดไฟล์เพื่อทำการเขียนข้อมูลต่อท้าย <<
แต่ในจุดนี้ยังไม่ใช่ปัญหาใหญ่ของผมเพราะผมสามารถเขียนให้มันทำงาน2รอบได้คืออ่านแล้วค่อยเขียน(รู้สึกไม่ดีเลยแฮะ)
ปัญหาจริงๆของผมก็คือ เมื่อเวลา user ใช้ proxy ของผมผมจะมีการบันทึกค่าต่างๆเช่น username/ip/time
ไว้ใน text file
โดยถ้า user คนนั้นเคยมีข้อมูลอยู่ก่อนแล้วใน text file ก็ให้มันลบข้อมูลเก่าแล้วแทนที่ด้วยข้อมูลใหม่
แต่ถ้ายังไม่เคยมีก็ให้มันเขียนข้อมูลต่อท้ายลงไปใหม่
ซึ่งในทางทฤษฎีที่ผมทดลองมันใฃ้ได้อย่างสมบูรณ์แบบ
แต่พอใช้จริงสิครับ - -*
user นั้นเข้ามาใช้งานพร้อมๆกันทำให้บางคนบันทึกลงไปได้และบางคนก็ไม่มีข้อมูลในการบันทึกเลย
ทำให้ผมสงสัยว่า ช่วงเวลาที่คนแรกเปิดไฟล์นั้นคนที่2ในช่วงเวลาเดียวกันอาจจะ
-อ่านไฟล์ไม่ได้
-ไม่สามารถบันทึกข้อมูลได้
-บันทึกไปแล้วถูกบันทึกทับกลับ
ซึ่งมันเป็นปัญหาที่ผมยังหาทางออกไม่ได้ซักทีและปัญหานี้ทำให้ผมหยุดชะงักการพัฒนาโปรแกรมไปเลย
ใครที่เคยเจอปัญหาเดียวกันหรือมีทางแก้แล้วหรือคิดว่ามีก็ขอให้ช่วยแสดงความคิดเห็นด้วยครับ
ผมคิดว่าปัญหานี้เป็นกันทั่วโลก
ยังไงก็ขอขอบคุณน้ำใจในการแบ่งปันกันไว้ล่วงหน้านะครับ
^^
-
ก่อนอื่นเลย ผมคิดว่า การถามปัญหาควรตั้งในห้อง IT problem consult นะครับ
จะได้เป็นการใช้งานห้องให้ถูกต้อง และเป็นเหมือนการรวม Q&A ในห้อง IT problem consult ด้วย
สำหรับเรื่องปัญหาผมคิดว่าน่าจะเกิดจากการเปิดปิดไฟล์บ่อย (เพื่ออ่านและเขียน)
ซึ่งจริงๆ แล้ว perl จะมี mode ที่อนุญาตให้อ่านและเขียนพร้อมกันได้ คือ "+>" ครับ
ยังไงก็ลองแก้เป็นเปิดไฟล์ครั้งเดียว แล้วเก็บ handle เป็นตัวแปรแบบ global ดูครับ
-
ขอโทษด้วยนะครับ
พอดีเห็นมันเป็น Perl เลยเข้าหมวดนี้ไว้เผื่อคนอื่นมีปัญหาเหมือนผมจะได้เจอได้รวดเร็ว
แต่ยังไงก็ขอบคุณนะครับ
เดี๋ยวจะลองดูครับ
-
จากที่ทดลองทั้งหมดไม่ว่าจะลองทำอย่างที่ท่าน Gen0TypE บอก
หรือจะลอง flock ไฟล์ สรุปแล้วก็คือ ไม่มีทางไหนเลยที่ใช้งานได้ดี
ตอนนี้ผมเลิกหลักการเขียนลง text file แล้ว
เปลี่ยนมาใช้แบบติดต่อฐานข้อมูลเอา ผลออกมาคือ เวิร์กสุดยอด
ไม่มีปัญหาดังที่กล่าวมาข้างต้นอีกต่อไป อิอิ