ประสบการณ์ upgrade PHP 5.2 เป็น 5.3 บน shared hosting

เคยเกริ่นๆ ถึงไปบ้างแล้วครั้งนึง วันนี้ upgrade จริงไปสามเครื่องแล้วครับ ณ จุดนี้ยังไม่พบปัญหาอะไร (ดูจาก error log)

step หลักๆ ที่ต้องทำ และควรทำ

  • ปิด display errors ไปซะก่อน (plesk ปิดให้อยู่แล้ว ก็ไม่มีปัญหาอะไร)
  • ต้อง compile extension ใหม่หมด (ไม่ใช่ปัญหาเท่าไหร่ นาทีสองนาทีก็เสร็จ)
  • ตรวจสอบ date.timezone ว่าตั้งค่าถูกต้องเรียบร้อยแล้ว
  • แก้ไข error_reporting เป็น E_ALL & ~E_DEPRECATED เพื่อไม่ให้แสดงการแจ้งเตือน function ที่กำลังจะเลิกใช้งาน
  • ลองรัน php -v หลังจาก upgrade เสร็จดู มันไม่ควรจะมี error อะไรแล้ว ณ จุดนี้ (อาจมี error extension บ้าง ก็ไป compile ใหม่)

สิ่งนึงที่ PHP 5.3 ทำได้ดีขึ้นกว่า php 5.2 คือความเร็วในการทำงานครับ อัพแล้ว CPU load ลดลงพอสมควร (ประมาณ 5-10% จากเดิม)
และมีผล benchmark มายืนยันครับ ด้านล่างเกิดจาก script เขียนเอง หาค่า prime number ถึงหนึ่งล้านแล้วนับว่ามีกี่ตัว ใช้ operation ของคณิตศาสตร์ครบ เรียกใช้ array และ loop ค่อนข้างเยอะ ผลที่ได้ดังนี้ครับ

php 5.2
found 148933 primes in 8.5779600143433 seconds
found 148933 primes in 8.2599279880524 seconds
found 148933 primes in 8.3352251052856 seconds
found 148933 primes in 8.706248998642 seconds
found 148933 primes in 7.9928619861603 seconds
found 148933 primes in 8.6205351352692 seconds
found 148933 primes in 8.7155790328979 seconds
found 148933 primes in 8.5939400196075 seconds
found 148933 primes in 8.2090210914612 seconds
found 148933 primes in 8.5422840118408 seconds

php 5.3
found 148933 primes in 5.9568440914154 seconds
found 148933 primes in 6.0401220321655 seconds
found 148933 primes in 6.0001261234283 seconds
found 148933 primes in 7.2805230617523 seconds
found 148933 primes in 5.8353569507599 seconds
found 148933 primes in 5.9203631877899 seconds
found 148933 primes in 5.8652279376984 seconds
found 148933 primes in 5.8191518783569 seconds
found 148933 primes in 5.9107868671417 seconds
found 148933 primes in 5.9400360584259 seconds

จากแปดวิครึ่ง ลดลงมาเหลือประมาณหกวิ เร็วขึ้น 2 วินาทีครึ่งโดยประมาณ หรือเร็วขึ้น 30% นี่รันบนเครื่องเดิมนะครับ แค่เปลี่ยน version php อย่างเดียว

อัพ php 5.3 กันเถอะครับ :slight_smile: ไม่น่ากลัวหรอก

1 Like

อยากทราบว่า php version ล่าสุด สามารถใช้ try{;}catch{;} ดัก exception ได้ 100% หรือยังครับ

มันไม่ 100% ยังไงครับ?

try catch มันมากับการทำงานที่เป็น OOP เท่านั้นครับ ซึ่งตัวมันเองดัก “exception” ได้ 100% ตั้งแต่ php 5.2 แล้วนะ
ส่วน php error ที่ไม่ใช่ exception แบบ OOP มันดักไม่ได้ตั้งแต่แรกอยู่แล้วครับ อันนั้นต้องใช้ set error handler แทนครับ

มันเหมือนกับว่าเราต้อง throw new Exception ไปให้ มันถึงดักจับได้
แต่จับ error ตัวแปร ตรงๆ กลับทำไม่ได้ ผมก็เลยงงๆ
แต่เหมือนว่าถ้าใช้ yii framework กลับจับได้(อันนี้ผมไม่แน่ใจ)

ส่วน php error ที่ไม่ใช่ exception แบบ OOP มันดักไม่ได้ตั้งแต่แรกอยู่แล้วครับ อันนั้นต้องใช้ set error handler แทนครับ

ตามนี้ครับ

ขอบคุณครับ

+1 และปักหมุดครับ

ขอบคุณมากครับ มีแต่เรื่องดีๆ มีประโยชน์มาแชร์ตลอดเลย :d16c4689:

ขอบคุณครับ.

ขอถามเพิ่มเติมครับว่า ถ้า up php เป็น 5.3 แล้ว ควรจะอัพ อื่น ๆ ด้วยหรือไม่ครับเช่น

apache 2.4.x
mysql 5.5.x

ผมอัพ 5.3 แล้ว แก้ code php นิดนหน่อย ก็เรียบร้อยแล้วเหมือนกันครับ :th_113_:

น่าจะต้องเปิด short_open_tag = On อีกตัวนะ ผมโดนเข้าไป code บางเวปหลุดเลย

ผมมีลูกค้าบางเว็บ เคยขอจะอัพ แต่ลูกค้าบอกว่าต้องทำเว็บใหม่อีก ค่าจ้างแพงกว่าค่าเช่าโฮส :th_116_:

เอ่อ ลืม แหะๆ แบบว่าเปิดเป็น default อยู่แล้วอะครับ :frowning:

พึ่งอัพไป ยังไม่รู้ feedback ของลุกค้า แต่เตรียมเครื่อง 5.2.x ไว้รองรับแล้ว

ต้องปิด

register_long_arrays

และ

magic_quotes_gpc

ด้วยครับ

เพิ่ง deploy ไปกับเครื่องนึงในฟาร์ม ที่มีโดเมนน้อยสุดวันนี้
พบปัญหาคือ จะต้องปิด safe_mode ออก เพราะ safe_mode กำลังจะยกเลิกใช้ไปแล้วใน php 6
ไม่อย่างนั้นจะใช้ session ไม่ได้

อ่า… เจอปัญหาเพิ่มนิดหน่อย

  • joomla 1.0
  • mambo ไม่แน่ใจ version

บร๊ะเจ้า ยังมีลูกค้าใช้อยู่ แทบกราบ T_T

joomla 1.0 นี่ถ้าอัพแล้วเหมือน content ไม่แสดงครับ. ผมย้ายไปอีกเครื่องที่เป็น 5.2 แทน

Joomla 1.7-2.5 ธีมส่วนใหญ่จะพังครับ ต้องแก้ php อีก ลูกค้าที่แก้ไม่เป็นนี่เหนื่อยเลยครับ

ขอบคุณมากครับ สำหรับผลเทส น่าสนใจมากๆ

พึ่งอัพไปไม่ถึงเดือนเหมือนกันครับ ^^ ดาต้าเบสหายทุกแอคเคาส์เลย ต้องมานั่ง manual add ทีละแอคเคาส์