Hướng dẫn php performance

Hiệu suất ứng dụng không chỉ là một vấn đề kỹ thuật. Hiệu suất có thể tạo nên thành công cho doanh nghiệp hoặc làm nó thất bại. Vì vậy, nếu bạn nghĩ vài mili giây không phải là vấn đề lớn, hãy suy nghĩ lại.

Why does Performance Matter?

Chủ yếu có ba lý do tại sao hiệu suất là cần thiết.

  • Đầu tiên là Trải nghiệm người dùng ; nếu ứng dụng của bạn mất nhiều thời gian để tải, thì bạn đang mạo hiểm để người dùng của mình chuyển sang đối thủ cạnh tranh hoặc để lại những đánh giá không tốt, điều này sẽ ảnh hưởng không tốt đến hoạt động kinh doanh.

  • Lý do thứ hai là "Chuyển đổi". Chuyển đổi là số lượng người dùng thực sự mua sản phẩm của bạn hoặc tải xuống sách điện tử của bạn hoặc nói chung là những người dùng bỏ tiền cho các dịch vụ của bạn. Một trang web nhanh hơn có nghĩa là nhiều chuyển đổi hơn và nhiều lợi nhuận hơn.

  • Lý do thứ ba là “Khả năng mở rộng”. Ứng dụng của bạn có thể xử lý càng nhiều yêu cầu mỗi giây thì càng có nhiều lưu lượng truy cập hơn. Ví dụ: nếu ứng dụng của bạn có thể xử lý một quy trình trong 100ms, điều đó có nghĩa là ứng dụng của bạn có thể phục vụ 10 yêu cầu mỗi giây, vì vậy nếu bạn giảm thời gian xử lý ứng dụng xuống một nửa, dung lượng ứng dụng của bạn sẽ tăng gấp đôi.

Performance Case Studies

  • Firefox: khi họ làm cho trang tải xuống nhanh hơn 2,2 giây, họ đã nhận được hơn 10 triệu lượt tải xuống.
  • Shopzilla: khi trang web của họ nhanh hơn 5 giây, tỷ lệ chuyển đổi đã tăng 7–12%.
  • Bing: khi trang web công cụ tìm kiếm của Microsoft trở nên chậm hơn 1 giây, họ đã mất 2,8% doanh thu.
  • Yahoo !: giống như Bing, khi chậm hơn 0,4 giây, họ nhận được lưu lượng truy cập ít hơn 5-9%.

Vì vậy, bất kể ứng dụng của bạn kinh doanh loại hình kinh doanh nào, ứng dụng nhanh hơn đồng nghĩa với doanh thu cao hơn.

PHP Performance Optimization:

Choose The Right Version

Điều này là hiển nhiên, đặc biệt là sau PHP7 có hiệu suất tốt nhất trong số các phiên bản PHP cũ. Tôi sẽ không so sánh ở đây giữa các phiên bản PHP vì có rất nhiều bài báo thảo luận về điều đó, nhưng bạn vẫn có thể xem biểu đồ sau cho thấy hiệu suất của các phiên bản PHP được chạy bởi các CMS khác nhau.

PHP Micro-Optimization

PHP Micro-Optimization là những thay đổi nhỏ trong mã của bạn để cải thiện hiệu suất ứng dụng của bạn.

Ví dụ: Nếu bạn định sử dụng vòng lặp for, tốt hơn hết là bạn nên tính toán trước độ dài. Hình ảnh tiếp theo cho thấy kết quả của vòng lặp for với 1000 key có giá trị 1 byte được đưa ra. Bạn có thể nhận thấy sự cải thiện trong thời gian thực hiện.

Bất kể cải tiến nhỏ xảy ra bởi PHP Micro-Optimization nhưng nó vẫn chưa đủ. Bạn có thể xem thêm thông tin chi tiết về Tối ưu hóa vi mô trên phpbench.com.

XHProf: Profiling PHP Code

Sau khi chúng ta đã thấy giá trị hạn chế của PHP Micro-Optimization, đã đến lúc xác định chính xác phần nào trong mã của chúng ta chậm mà không cần phải đoán bằng cách sử dụng công cụ cấu hình có tên là XHProf. Sau khi cài đặt và định cấu hình XHProf trên máy chủ của bạn, 'bạn có thể tìm thấy hướng dẫn về cách cài đặt nó trên youtube. XHProf sẽ nối đầu trang và chân trang vào tất cả các tập lệnh PHP của bạn và tạo một báo cáo nơi bạn có thể tìm thấy tất cả các chức năng đã thực thi, quá trình thực thi thời gian và số lần gọi của mỗi chức năng. Hình ảnh tiếp theo là kết quả hồ sơ của một trang sản phẩm được xây dựng bằng laravel framework. Nó cho thấy getProductData[] đã được gọi 40 lần với tổng thời gian thực thi là 5s.

Thoạt nhìn, bạn có thể mong đợi vấn đề N + 1. Có nghĩa là nếu bạn sửa nó, trang sản phẩm của bạn sẽ nhanh hơn 5s.

The N+1 problem xảy ra khi bạn truy vấn một relational database để lấy dữ liệu từ hai bảng khác nhau. Ví dụ: bạn truy vấn tất cả các sản phẩm để lấy nameid. Và sau đó đối với mỗi sản phẩm, bạn truy vấn một bảng khác để biết thông tin chi tiết như màu có sẵn hoặc tình trạng còn hàng trong kho. Thông thường, nó có thể được khắc phục bằng cách viết lại truy vấn để lấy tối đa tất cả dữ liệu của bạn trong một hoặc hai truy vấn. Chúng ta sẽ không thảo luận sâu về nó trong bài này.

  • Caching

    Việc triển khai một lớp bộ nhớ đệm[caching ] sẽ có tác động lấy tải ra khỏi database của bạn và giảm thời gian truy xuất dữ liệu thường xuyên được yêu cầu. Cả Memcache hoặc Redis đều được sử dụng rộng rãi cho bộ nhớ đệm. Tuy nhiên, Redis có một số lợi thế cạnh tranh như đồng bộ hóa dữ liệu vào đĩa để khi khởi động lại dữ liệu máy chủ sẽ không bị mất và nó có tích hợp nhân bảnmaster/slave để bạn có thể dễ dàng mở rộng cụm redis khi ứng dụng của bạn phát triển.

Nguồn tham khảo: //codeburst.io/php-performance-optimization-992acaa78817

Chủ Đề