PHP nhận mức sử dụng bộ nhớ

Chức năng memory_get_usage có thể được sử dụng để theo dõi việc sử dụng bộ nhớ. Chức năng 'malloc' không được sử dụng cho mọi khối được yêu cầu, thay vào đó, một lượng lớn bộ nhớ hệ thống được phân bổ và biến môi trường được thay đổi và quản lý nội bộ

Hai loại sử dụng bộ nhớ khác nhau là -

  • Bộ nhớ mà động cơ yêu cầu từ HĐH [mức sử dụng thực]
  • Dung lượng bộ nhớ mà ứng dụng đã thực sự sử dụng [sử dụng nội bộ]

Việc sử dụng bộ nhớ được đề cập ở trên có thể được theo dõi bằng memory_get_usage[]. Hàm này trả về cả bộ nhớ thực và bộ nhớ thực được sử dụng tùy thuộc vào yêu cầu của chúng tôi

Ví dụ. nếu chúng tôi đang xem các đoạn mã cụ thể, bộ nhớ trong có thể liên quan. Mặt khác, nếu việc sử dụng bộ nhớ đang được theo dõi trên toàn cầu, thì việc sử dụng thực tế sẽ phù hợp hơn

Theo dõi mức sử dụng RAM của các ứng dụng PHP của bạn có thể hữu ích, đặc biệt nếu bạn nhận thấy mức tiêu thụ bộ nhớ cao khi chạy một thuật toán

Bạn đang chạy một ứng dụng Symfony trên máy chủ sản xuất của mình và đột nhiên bạn nhận thấy mức sử dụng bộ nhớ tăng đột biến trên bảng điều khiển Grafana tuyệt đẹp của mình

Bạn đã xác định được nguyên nhân của sự cố và bạn có thể sao chép nó trên máy chủ phát triển cục bộ của mình

Bây giờ bạn muốn biết lượng bộ nhớ được tiêu thụ trong quá trình thực thi tập lệnh của mình. PHP có các chức năng tích hợp cho điều đó

Hãy cùng xem memory_get_usage[]memory_get_peak_usage[]

  • memory_get_usage

Việc thực hiện chức năng này như sau

memory_get_usage[bool $real_usage = false]: int

Tham số real_usage có thể được sử dụng để nhận các giá trị khác nhau

  • true sẽ trả về bộ nhớ được sử dụng bởi trình quản lý bộ nhớ Zend Engine và do đó, bộ nhớ thực sự được sử dụng bởi quy trình PHP
  • false sẽ trả lại bộ nhớ được sử dụng để chạy tập lệnh

Nếu bạn muốn biết một lệnh gọi hàm đã sử dụng bao nhiêu bộ nhớ, sử dụng mức sử dụng thực là vô ích, nhưng nó hữu ích cho điểm chuẩn

  • memory_get_peak_usage[]

Hàm này có cùng tham số real_usage

Usage: 0.44483184814453 MBs
Usage: 0.51425933837891 MBs
Usage: 0.61490631103516 MBs
Usage: 0.65305328369141 MBs
Usage: 0.81620025634766 MBs
Usage: 0.85434722900391 MBs
Usage: 0.89249420166016 MBs
Usage: 0.93064117431641 MBs
Usage: 1.2187881469727 MBs
Peak usage: 1.2569732666016 MBs
0 có

Giá trị trả về sẽ là bộ nhớ tối đa mà quá trình thực thi cần

Các trường hợp sử dụng của từng chức năng là gì?

Dưới đây là một ví dụ về thuật toán tiêu thụ bộ nhớ cao

Tạo các chuỗi ngẫu nhiên và đẩy chúng vào một mảng — PHP 8. 1

Đây là đầu ra của tập lệnh này [PHP 8. 1]

Usage: 0.44483184814453 MBs
Usage: 0.51425933837891 MBs
Usage: 0.61490631103516 MBs
Usage: 0.65305328369141 MBs
Usage: 0.81620025634766 MBs
Usage: 0.85434722900391 MBs
Usage: 0.89249420166016 MBs
Usage: 0.93064117431641 MBs
Usage: 1.2187881469727 MBs
Peak usage: 1.2569732666016 MBs

Bây giờ bạn đã biết cách sử dụng các chức năng này, bạn có thể gỡ lỗi ứng dụng của mình và xem mức tiêu thụ bộ nhớ của ứng dụng bất kỳ lúc nào

Nếu bạn muốn tìm hiểu về PHP, việc sử dụng bộ nhớ tập lệnh không phải là một trong những điều đầu tiên bạn sẽ tập trung vào. Nhưng biết điều này có thể cực kỳ hữu ích cho bạn, đặc biệt nếu bạn muốn trở thành một nhà phát triển giỏi hơn

Tại sao việc kiểm tra mức sử dụng bộ nhớ tập lệnh PHP lại quan trọng?

Hiệu quả bộ nhớ thường bị bỏ qua khi xem xét các yêu cầu của ứng dụng web. Nói chung, điều này không sao vì có những điều quan trọng khác cần xem xét, chẳng hạn như các phương pháp xác thực tốt và bảo mật SQL chẳng hạn

Nhưng nếu bạn sử dụng quá nhiều bộ nhớ trong thiết bị của mình, bạn có thể gặp một số vấn đề. Điều này có thể dẫn đến sự cố, lỗi rất khó tìm và thậm chí có thể gây ra các cuộc tấn công từ chối dịch vụ

Điều này thậm chí còn trở nên quan trọng hơn trong các trang web có lưu lượng truy cập cao nơi việc thực thi các tập lệnh đồng thời có xu hướng xảy ra. Ngoài ra, các vấn đề liên quan đến bộ nhớ có thể dễ dàng gây ra các vấn đề khác

Cách kiểm tra việc sử dụng tập lệnh bộ nhớ tập lệnh PHP của bạn

Là người dùng Mac, điều quan trọng là bạn phải chăm sóc thiết bị của mình để đảm bảo thiết bị luôn hoạt động trơn tru. Một điều bạn có thể làm như một phần của quy trình bảo trì là thỉnh thoảng kiểm tra mức sử dụng bộ nhớ máy Mac của bạn. Để kiểm tra điều này, PHP đi kèm với một chức năng tích hợp sẵn để trả về dung lượng bộ nhớ được phân bổ cho tập lệnh PHP. chức năng là

memory_get_usage[]

Mặc dù chức năng này trả lại dung lượng bộ nhớ được phân bổ cho tập lệnh PHP, nhưng bạn sẽ thấy số lượng tính bằng byte. Nếu bạn muốn chuyển đổi số tiền này thành KB, hãy sử dụng

memory_get_usage/1024

Nếu bạn muốn chuyển số tiền này sang MB, hãy sử dụng

memory_get_usage/1048576

Ngoài việc sử dụng các chức năng trên, có một chức năng quan trọng khác mà bạn có thể sử dụng. Lần này, hàm sẽ trả về dung lượng bộ nhớ tối đa mà tập lệnh PHP sử dụng cho đến khi bạn gọi hàm. Đối với điều này, bạn sử dụng

memory_get_peak_usage[]

Bạn có thể sớm phát hiện ra rằng mức sử dụng bộ nhớ hiện tại của thiết bị sẽ giảm sau khi bạn bỏ đặt mảng trong khi mức sử dụng cao nhất vẫn giữ nguyên. Lý do cho điều này là hàm này nhận một "đối số boolean" tùy chọn với giá trị mặc định sai. Lập luận này là

$real_usage

Bạn còn có thể làm gì khác nữa không?

Có thể đôi khi bạn sẽ thấy quá khó khăn để có được đầu ra từ các chức năng được đề cập ở trên. Điều này đặc biệt đúng khi mức sử dụng bộ nhớ của thiết bị phụ thuộc vào các yếu tố khác như giá trị chuỗi yêu cầu

Đôi khi, các vấn đề về trí nhớ chỉ xảy ra sau một thời gian hoặc trong những trường hợp rất cụ thể. Trong những trường hợp như vậy, chỉ cần kiểm tra mức sử dụng bộ nhớ của bạn là không đủ. Đối với điều này, một điều bạn có thể làm là sử dụng cơ sở dữ liệu hoặc tệp nhật ký để ghi lại việc sử dụng bộ nhớ của thiết bị

Để có giải pháp hiệu quả hơn, bạn nên để PHP làm việc cho bạn. Kiểm tra xem mức sử dụng bộ nhớ của thiết bị có quá cao không. Nếu không, bạn có thể tiếp tục thực thi tập lệnh

Nếu không, bạn có thể gửi email thông báo cho chính mình có chứa thông tin gỡ lỗi có liên quan. Làm điều này giúp bạn dễ dàng kiểm tra các tập lệnh của máy Mac một cách tích cực hơn để tìm ra điều gì đó không ổn càng sớm càng tốt

Đặt giới hạn bộ nhớ

Nếu không muốn Mac sử dụng quá nhiều bộ nhớ, bạn có thể đặt giới hạn bộ nhớ cho PHP bằng hàm

ini_set[]

Chẳng hạn, bạn có thể đặt giới hạn bộ nhớ PHP của mình theo cách này

ini_set['memory_limit','512M']

Ngoài việc đặt giới hạn cho PHP, bạn cũng có thể tăng giới hạn này. Giới hạn bộ nhớ của PHP là "mỗi tập lệnh", có nghĩa là nó đặt số lượng tối đa mà mỗi tập lệnh có thể phân bổ. Điều này ngăn mọi tập lệnh được viết kém sử dụng hết bộ nhớ khả dụng trên máy chủ của bạn

Cài đặt giới hạn của PHP không giống như một không gian lưu trữ đơn giản nơi một số tập lệnh PHP phát triển bên trong hoặc nhóm từ. Do đó, khi bạn chặn cài đặt này, bạn có thể thấy kết quả xuất ra lỗi giống như sau

PHP Lỗi nghiêm trọng. Hết bộ nhớ [được phân bổ x] [đã cố phân bổ x byte] trong /path/to/php/script

hoặc

Lỗi nghiêm trọng. Kích thước bộ nhớ cho phép của x byte đã cạn kiệt [đã cố phân bổ x byte] trong /path/to/php/script

Chẳng hạn, nếu bạn yêu cầu hai hoặc nhiều tập lệnh cùng lúc, thì tập lệnh này hoàn toàn tách biệt với tập lệnh kia. Nói cách khác, cài đặt memory_limit không phải là thứ mà họ chia sẻ

PHP không hỗ trợ đa luồng và nó cũng không được thiết kế cho việc này. Điều này có nghĩa là nếu một số tập lệnh sử dụng tất cả 100MB cùng một lúc, điều này sẽ có tổng mức sử dụng bộ nhớ là 500MN của PHP. Nếu giới hạn bộ nhớ PHP của bạn là 128 MB, thì bạn sẽ không đạt được nó

Tuy nhiên, nếu bạn sử dụng các tập lệnh yêu cầu các tập lệnh PHP nội tuyến khác bằng cách sử dụng bao gồm một lần, yêu cầu hoặc bao gồm, giới hạn sẽ được kế thừa và chia sẻ bởi tất cả các tập lệnh phụ thuộc vào tập lệnh gốc

Sự kết luận

Học cách kiểm tra mức sử dụng bộ nhớ tập lệnh PHP của máy Mac có thể không nằm ở đầu danh sách ưu tiên của bạn nhưng nó vẫn là một điều quan trọng. Nhưng khi biết các quy trình này, bạn có thể dễ dàng khắc phục sự cố thiết bị của mình trong trường hợp gặp phải bất kỳ sự cố nào

Làm cách nào để kiểm tra mức sử dụng bộ nhớ trong PHP?

Cách tìm lỗi rò rỉ bộ nhớ PHP .
Lựa chọn Hai. Khám phá mức sử dụng cao nhất. Sử dụng `memory_get_peak_usage` để biết lượng bộ nhớ đã được phân bổ cho tập lệnh của bạn. .
Lựa chọn Ba. Sử dụng Trình biên dịch bộ nhớ PHP. .
Trình cấu hình bộ nhớ Xhprof PHP. .
Xdebug PHP Profiler. .
PHP-memprof

Làm cách nào để lấy bộ nhớ và mức sử dụng CPU trong PHP?

Thông tin sử dụng CPU . use getrusage[] function in PHP It'll return lots of CPU uses variables that help you to determine whats sources uses too much CPU resources.

Mỗi quy trình PHP tiêu thụ bao nhiêu bộ nhớ?

Giới hạn bộ nhớ không giống như RAM . Điều đó có nghĩa là trang web của bạn có thể tiêu thụ điện. g 10 GB RAM , với giới hạn bộ nhớ là 256 MB.

PHP sử dụng bộ nhớ như thế nào?

Trình thông dịch PHP tự động cấp phát bộ nhớ cho tập lệnh . Bộ nhớ này được phân bổ theo khối, các phần nhỏ của một lượng bộ nhớ cố định. Khi tất cả bộ nhớ được phân bổ đã được sử dụng bởi tập lệnh, trình thông dịch sẽ phân bổ một đoạn khác.

Chủ Đề