หัวข้อ: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: DewChelsea ที่ 04 เมษายน 2014, 18:45:51 ผมเขียนสคริปเก็บสินค้าขึ้นมา แล้วพอรันๆไปหลายลูปเนี่ย memory มันก็เต็มไปเรื่อยๆ ทั้งๆที่ตั้งค่า php.ini เรียบร้อย
ทั้งๆที่เก็บ 4 array url,image,title,description แค่ 30 ลูป memory ก็เต็มแล้วครับ คำถามครับ ผมต้องการให้เวลารันแต่ละลูป มันไม่เก็บ ความจำของลูปที่ผ่านมาอะครับ เพื่อลดความจำของ memory (http://s16.postimg.org/62dw5z6bp/2014_04_04_18_43_23.jpg) ตรงช่อง memory พอขึ้น 3.2 gb เมื่อไหร้ สคริปหยุดทำงานทุกทีครับ ลองใช้ sleep ก่อนเข้าลูป ก็ไม่ช่วยอะไรครับ ใครพอมีประสปการณ์รบกวนด้วยครับ :-[ หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: antimage3114 ที่ 04 เมษายน 2014, 18:49:55 ลอง unset($vars);
ดูครับผม ตัวแปรที่เก็บค่าต่างๆทุกตัวครับ unset มันให้หมดก่อนเริ่มไปเงื่อนไขถัดไป ตัวอย่างง โค๊ด: for($i = 0 ; $i <= 10 ; $i++ ){ ปล. เหมือนตั้งกระทู้ผิดหมวดนะครับหมวด Programming ก็มีนะครับ edit : เพิ่ม ปล. หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: smapan ที่ 04 เมษายน 2014, 18:57:48 ใน loop เก็บอะไรบ้างครับ
เพราะบางครั้งตัวแปล ถ้าเราเอาไปเก็บค่าที่ไม่จำเป็นก็เต็มได้ง่ายๆครับ เช่นเอาไปเก็บอ่านเนื้อหาของ ไฟล์ใหญ่ๆครับ หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: kongpair ที่ 04 เมษายน 2014, 19:00:14 ล้างตัวแปรทุกครั้ง หลังใช้งาน เป็นการคืนพื้นที่หน่วยความจำ
หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: Synchronize ที่ 04 เมษายน 2014, 19:15:37 ตัว script ทำงาน นานรึป่าวครับ
เพราะ ปกติ php พอรันจบ มันก็คืน memory เข้าระบบอยู่แล้ว ถ้าค่อยๆ เต็ม แสดงว่า มันทำงานไม่เสร็จ แล้วก็มีคนมาเปิดต่อเรื่อยๆ รึป่าว แล้วใน php.ini ตั้งค่า memory ไว้เท่าไร ครับ :wanwan017: หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: DewChelsea ที่ 04 เมษายน 2014, 19:19:34 ลอง unset($vars); ดูครับผม ตัวแปรที่เก็บค่าต่างๆทุกตัวครับ unset มันให้หมดก่อนเริ่มไปเงื่อนไขถัดไป ตัวอย่างง โค๊ด: for($i = 0 ; $i <= 10 ; $i++ ){ ปล. เหมือนตั้งกระทู้ผิดหมวดนะครับหมวด Programming ก็มีนะครับ edit : เพิ่ม ปล. ขอโทษด้วยครับ ลืมไปว่าผิดหมวด unset แล้วครับ รันได้ซัก3ลูป ลูปละ100สินค้า ก็เต็มครับ ใน loop เก็บอะไรบ้างครับ เพราะบางครั้งตัวแปล ถ้าเราเอาไปเก็บค่าที่ไม่จำเป็นก็เต็มได้ง่ายๆครับ เช่นเอาไปเก็บอ่านเนื้อหาของ ไฟล์ใหญ่ๆครับ url,image,title,description ครับ ล้างตัวแปรทุกครั้ง หลังใช้งาน เป็นการคืนพื้นที่หน่วยความจำ หมายถึง unset มั้ยครับ ?ตัว script ทำงาน นานรึป่าวครับ 2048 ครับเพราะ ปกติ php พอรันจบ มันก็คืน memory เข้าระบบอยู่แล้ว ถ้าค่อยๆ เต็ม แสดงว่า มันทำงานไม่เสร็จ แล้วก็มีคนมาเปิดต่อเรื่อยๆ รึป่าว แล้วใน php.ini ตั้งค่า memory ไว้เท่าไร ครับ :wanwan017: หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: buy high pr domain ที่ 04 เมษายน 2014, 20:19:36 unset
หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: DewChelsea ที่ 04 เมษายน 2014, 20:43:06 หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: goldxp ที่ 04 เมษายน 2014, 20:43:17 php เวอร์ชั่นอะไรครับ ต้องระวังพวกตัวแปร reference ด้วยครับ เพราะจะทำให้ memory เต็มได้ง่าย
http://www.php.net/manual/en/features.gc.collecting-cycles.php หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: DewChelsea ที่ 04 เมษายน 2014, 20:46:57 php เวอร์ชั่นอะไรครับ ต้องระวังพวกตัวแปร reference ด้วยครับ เพราะจะทำให้ memory เต็มได้ง่าย [url]http://www.php.net/manual/en/features.gc.collecting-cycles.php[/url] ขอบคุณครับ 5.2.6 อะครับ หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต& เริ่มหัวข้อโดย: ahon ที่ 04 เมษายน 2014, 21:28:59 รูปภาพถ้าไม่จำเป็นอย่าเก็บลงdb/ตัวแปรครับให้เก็บลงดิส และกำหนดpath แทนครับเวลาใช้งานก็ค่อยดึงขึ้นมา
หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต& เริ่มหัวข้อโดย: DewChelsea ที่ 04 เมษายน 2014, 21:58:25 รูปภาพถ้าไม่จำเป็นอย่าเก็บลงdb/ตัวแปรครับให้เก็บลงดิส และกำหนดpath แทนครับเวลาใช้งานก็ค่อยดึงขึ้นมา รูปภาพผมเก็บแค่ url ครับ แต่1ลูป ผมจะ append ลง csv ครับ เก็บไว้ใน disk ลอง unset และ clear dom แล้ว memory ยังเต็มอยุ่ ไม่ทราบเหมือนกันว่าจะเกี่ยวกับ การ append csv หรือเปล่าครับ หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: Synchronize ที่ 04 เมษายน 2014, 22:12:59 append csv โค้ดเป็น ยังไงครับ
แล้ว ที่มาของ array มาจากไหนเหรอครับ :wanwan017: หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: DewChelsea ที่ 04 เมษายน 2014, 22:21:09 append csv โค้ดเป็น ยังไงครับ แล้ว ที่มาของ array มาจากไหนเหรอครับ :wanwan017: ใช้ preg match ครับ เก็บ array ของแต่ละส่วนของหน้าเว็บ url,image,title,description code csv $string = $urls.','.$image.','.$title.','.$desc."\n"; $file = "data/".$_POST['name'].".csv"; $handle = fopen($file, 'a+') or die("Can't Scrape Data"); fwrite($handle, $string); หัวข้อ: Re: [สอบถาม]ลองรัน สคริปที่เขียนเอง แล้ว memory เต็มง่าย เริ่มหัวข้อโดย: goldxp ที่ 04 เมษายน 2014, 22:31:10 php 5.2 มีปัญหาเรื่อง gc เวลามี circular reference อย่างเช่น node มี property อ้างอิงถึง parent node, memory จะถูกเก็บเพิ่มขึ้นเรื่อยๆ
คาดว่าเกิดจาก dom ที่มีการ reference ไปยัง parent node ครับ http://www.php.net/manual/en/class.domnode.php http://www.php.net/manual/en/features.gc.performance-considerations.php ง่ายที่สุดคือเปลี่ยนไปใช้ย php5.3+ ครับ ถ้าแก้ที่โค้ดคือไม่ควรใช้ dom เปลี่ยนไปใช้ตัวอื่นที่ไม่มี circular reference |