PHP không dùng để build hệ thống lớn?

Tram Ho

Tác giả: Nghia Minh Le

Khi nói PHP “is bad to build big system” thì mình biết ngay sẽ có hàng tá người nhảy vào comment ngược xuôi. Mỗi người mỗi quan điểm, nhưng có nhiều lập luận mà các bạn chưa thực sự suy nghĩ thấu đáo.

Một số cho rằng tôi chưa dùng PHP nhiều, TIKI là cái system dùng PHP lớn nhất cái đất Việt Nam này luôn rồi. Vì chẳng có cái business nào lớn như TIKI ở Việt Nam mà còn dùng system bằng PHP cả. Hàng triệu dòng code php. Chỉ riêng các service dùng php liên quan tới sản phẩm, seller của team tôi cũng tới cả trăm ngàn dòng code, chục service, hàng trăm background worker.

Lập luận thằng lớn dùng như Facebook, Youtube… blabla. Vậy bạn có hỏi nó dùng cho các phần nào không, nó có là main stream cho tất cả các thứ, từ front end tới backend, từ service tới background worker không? Phần lớn backend Facebook đã dùng C++, Youtube không lẽ viết streamming bằng PHP… Alibaba, Taobao TQ backend toàn Java. Bản thân Facebook dùng PHP thì họ cũng viết lại compiler HHVM. Vậy công ty bạn bao nhiêu làm được C ở quy mô lớn? Hay chả có ai.

Lập luận ngôn ngữ không tồi chỉ người làm tồi. Cái này có thể đúng ở ngữ cảnh nhất định, nhưng khi scale tới giới hạn mà vẫn loay hoay với ngôn ngữ đó thì chứng tỏ bạn có vấn đề về trình độ và thái độ. Bạn không hiểu được giới hạn dưới góc độ chuyên môn và bạn bảo thủ ngại thay đổi. Một cái đơn giản PHP không có connection pool, khi traffic tăng cao, số connection tới db tăng vọt không kiểm soát nổi, làm db overload luôn. Bạn định xử lý gì đây, loay hoay tricky cache này cache lọ à ? Hay bạn làm enterprise software, cần ổn định cao, nhưng type dữ liệu của php loạn cào cào, nhiều khi một field đổi type chết hàng tá background worker xử lý. Mỗi cái bug nhỏ nó làm tăng vọt chi phí maintain hệ thống. Nhiều cái xử lý threading ngôn ngữ khác một nốt nhạc, PHP viết script rồi clone hàng tá worker để chạy. Xử lý concurrency thì context switching, cái gì cũng phải móc vào một stateful service nào đó vì php stateless.

Tôi làm .NET gần 8 năm, rồi chuyển sang PHP làm 3 năm, làm cả Python cho phần xử lý binlog dữ liệu, tôi cảm thấy thoải mái chả vấn đề gì. Rồi khi cần tôi cũng chuyển sang Java viết toàn bộ phần đồng bộ dữ liệu xử lý stream realtime cho indexing product. Tôi chả yêu ghét ngôn ngữ nào, có đánh giá thì theo nhu cầu, thoải mái switch từ ngôn ngữ này sang ngôn ngữ khác. Nhưng điều tôi khó hiểu là sao người ta quá định kiến tới vậy. Tôi cho phần nhiều là thái độ bảo thủ, ngại đổi mới và không có tư duy phản biện.

Nghia Minh Le

.u730359efd678b6309bda2f85fdd895a7 { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .u730359efd678b6309bda2f85fdd895a7:active, .u730359efd678b6309bda2f85fdd895a7:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .u730359efd678b6309bda2f85fdd895a7 { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .u730359efd678b6309bda2f85fdd895a7 .ctaText { font-weight:bold; color:inherit; text-decoration:none; font-size: 16px; } .u730359efd678b6309bda2f85fdd895a7 .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .u730359efd678b6309bda2f85fdd895a7:hover .postTitle { text-decoration: underline!important; }

  Mảng và các hàm xử lý mảng trong PHP

.u1344f21716acfdcddb527a084603e572 { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .u1344f21716acfdcddb527a084603e572:active, .u1344f21716acfdcddb527a084603e572:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .u1344f21716acfdcddb527a084603e572 { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .u1344f21716acfdcddb527a084603e572 .ctaText { font-weight:bold; color:inherit; text-decoration:none; font-size: 16px; } .u1344f21716acfdcddb527a084603e572 .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .u1344f21716acfdcddb527a084603e572:hover .postTitle { text-decoration: underline!important; }

  10 Thư viện PHP mà bất kỳ ai cũng không thể bỏ qua

Chia sẻ bài viết ngay

Nguồn bài viết : Facebook