Hướng dẫn php catch memory exhausted error - php bắt lỗi hết bộ nhớ
Như câu trả lời này cho thấy, bạn có thể sử dụng Show
Bạn vẫn sẽ phải quản lý đầu ra được tạo từ mã vi phạm, cho dù bởi toán tử
Khi chạy, điều này xuất ra Bạn có thể kiểm tra mảng Mặc dù vậy, tôi khuyên bạn nên giữ 0 cao (giá trị 1) và sử dụng (như những người khác đã đề xuất) xử lý lỗi cho mọi thứ khác với 2 và ErrorException . 1 Giới thiệu: Tại sao lỗi gây tử vong xảy ra?Các lỗi ngoài bộ nhớ là một trong những vấn đề phổ biến và khó sửa chữa nhất mà các nhà phát triển PHP gặp phải-đặc biệt là với các ứng dụng xử lý một lượng lớn dữ liệu-nhờ cài đặt bộ nhớ mặc định tương đối bảo thủ của PHP. Trên thực tế, có hơn 1.300 câu hỏi liên quan đến lỗi bộ nhớ PHP chỉ trên Stack Overflow. 98% thời gian lỗi này xuất phát từ việc tải nhiều hơn vào bộ nhớ so với những gì bạn thiết lập PHP để xử lý trong một quy trình. Có những nguyên nhân khác, nhưng những nguyên nhân này ít phổ biến hơn nhiều - rất hiếm khi nó có thể là rò rỉ bộ nhớ nếu bạn đang ở trên Php 5.3 trở lên. this error comes from loading more into memory than what you set up PHP to handle in one process. There are other causes, but these are much less common — very rarely it can be a memory leak if you're on PHP 5.3 and above. Nếu bạn không chắc chắn giới hạn bộ nhớ PHP của bạn được đặt thành gì, thì nó sẽ được đưa vào một cách hữu ích trong thông báo lỗi. Tuy nhiên, kích thước được báo cáo bằng byte, vì vậy chúng tôi đã thực hiện một số chuyển đổi cho bạn:
2 Tôi phải làm gì để giải quyết nó?Hành động đầu tiên của bạn là tăng giới hạn bộ nhớ của bạn. Lưu ý, đây là một sản xuất gỡ lỗi tạm thời. Mục tiêu là tăng bộ nhớ lên một điểm mà chúng tôi có ứng dụng hoạt động trở lại với mục đích sau đó giảm sử dụng bộ nhớ. Khi bạn giảm việc sử dụng bộ nhớ, bạn có thể giảm bộ nhớ giới hạn nó xuống một giá trị phù hợp hơn. Kế hoạch của bạn nên sử dụng ít bộ nhớ mà bạn thực tế có thể sử dụng nơi ứng dụng hoạt động và chức năng chính xác trong máy chủ sản xuất dựa trên khối lượng công việc của người dùng của bạn (con người hoặc lập trình). Tôi thường khuyên bạn nên đặt giới hạn bộ nhớ thành một thứ gì đó cao, như 1GB, giả sử bạn có ít nhất 150% số tiền miễn phí trong RAM.first course of action is to increase your memory limit. Note, this is a temporary debugging producedure. The goal is to increase the memory to a point where we have the application working again for the purpose of then reducing the memory usage. Once you decrease the memory usage you can lower the memory limit it to a value that's more suitable. Your plan should be to use as little memory as you could practically use where the application works and functions correctly in a production server based on the workload by your users (humans or programmatic). I usually recommend setting the memory limit to something high, like 1GB, assuming you have at least 150% of that free in RAM. Ngoài ra, không bao giờ thực hiện các thử nghiệm này trên máy chủ sản xuất trừ khi bạn chắc chắn rằng bạn có nhiều RAM và bạn hoàn toàn hiểu cách xử lý máy chủ web tiêu thụ bộ nhớ. Bạn có thể dễ dàng mang một máy chủ đến đầu gối của nó nếu có nhiều quy trình đồng thời chạy, mỗi quy trình sử dụng một lượng bộ nhớ cao. Tôi sẽ không bao giờ, bao giờ khuyên bạn nên đặt giới hạn bộ nhớ thành 1 (không giới hạn) trong môi trường sản xuất. Đó là một công thức cho thảm họa. Đừng phạm sai lầm mới.never do these tests on a production server unless you're sure you have plenty of RAM and you fully understand how web server processes consume memory. You could
easily bring a server to its knees if there are many concurrent processes running, each using a high amount of memory. I would never, ever recommend setting the memory limit to 1 (unlimited) in a production environment. That's a recipe for disaster. Don't make that newbie mistake.Vì vậy, làm thế nào để bạn làm điều này? Đơn giản - Tăng giới hạn bộ nhớ được lập trình sớm trong mã của bạn, trước khi quá trình của bạn hết bộ nhớ. Nếu bạn làm theo cách này, bạn chỉ có thể cung cấp bộ nhớ thêm PHP khi đoạn mã đó được gọi là thay vì tăng giới hạn bộ nhớ cho tất cả các quy trình PHP.
2.1 đã làm mọi thứ, đặt nó thành không giới hạn và vẫn gặp lỗiGọi cho ER, bởi vì có lẽ bạn sẽ kết thúc ở đó. Không, nghiêm túc, đây là một vài điều bạn có thể làm. Đầu tiên, bạn cần tự hỏi mình khi điều này bắt đầu xảy ra. Nó có hoạt động trước đây không, và bây giờ nó không? Nếu vậy, hãy nghĩ về những gì có thể đã thay đổi. Cô lập vấn đề. Có lẽ bạn đã không chạm vào mã của mình trước khi sự cố xuất hiện. Vâng, những gì khác có thể đã thay đổi? Có sự phụ thuộc bên ngoài không? Có lẽ một cơ sở dữ liệu, hoặc các tệp được nhập bởi người dùng? Đặt điều đó vào danh sách nghi phạm của bạn và bắt đầu điều tra. Bắt đầu nhỏ; Bắt đầu với những gì bạn "nghĩ rằng" vấn đề là và cố gắng chứng minh bản thân sai. Nếu bạn không thể, hãy chuyển sang nghi phạm tiếp theo. Xem bạn đi bao xa trong mã của mình trước khi nó thoát sớm, sau đó bắt đầu thực hiện ngăn xếp cuộc gọi từ đó ( 7 nếu bạn chưa cài đặt XDebug). Nếu bạn có thể gỡ lỗi tương tác với trình gỡ lỗi XDebug hoặc Zend, hãy thực hiện điều đó và đặt một điểm dừng ngay trước khu vực có vấn đề.Tôi đã từng gặp vấn đề trong đó một tệp Excel tiếp tục hết bộ nhớ sau khi được nhập. Nó đã hoạt động tốt trong nhiều tháng, nhưng đột nhiên dừng lại. Tôi nghĩ rằng tôi đã mất ít nhất 5 giờ gỡ lỗi không ngừng trước khi tôi phát hiện ra vấn đề: dữ liệu ngẫu nhiên bằng cách nào đó đã được người dùng chèn vào một trong những ô của bảng tính. Rõ ràng PHP vừa mới đi haywire, và tôi vẫn chưa phát hiện ra nguyên nhân gốc rễ, mặc dù biết kích hoạt. Tôi đã có thể tiết kiệm rất nhiều thời gian bằng cách tự hỏi mình đã thay đổi điều gì. Câu trả lời rất rõ ràng - đầu vào dữ liệu của người dùng và cơ sở dữ liệu. Bạn có thể có một kinh nghiệm tương tự. 3 xdebug, con dao quân đội Thụy SĩTrong mọi tình huống, có một công cụ bạn có thể tin tưởng để giúp chẩn đoán số lượng bộ nhớ bạn đang sử dụng và nơi trong mã của bạn, một lượng lớn bộ nhớ đang được sử dụng: XDebug. Bạn có thể cài đặt nó bằng các trình quản lý gói như 8, 9, 0 và 1; cài đặt một nhị phân được xây dựng sẵn; sử dụng 2; Hoặc đơn giản là tự biên dịch nó.Sau khi cài đặt XDebug, tất cả những gì bạn cần làm là làm mới trang hoặc, nếu mã của bạn có nghĩa là chạy trong vỏ, hãy chạy lại nó trong CLI. PHP bây giờ sẽ ném nhiều lỗi nhiều thông tin hơn, bao gồm một ngăn xếp cuộc gọi sẽ cho bạn biết chính xác nơi tập lệnh dừng với đường dẫn tệp, số dòng và thậm chí hàm cuối cùng được gọi. Nếu bạn muốn có thông tin chi tiết hơn, bạn sẽ cần tạo ra cái gọi là "tệp theo dõi". Để thực hiện việc này, hãy đặt các chỉ thị cấu hình 3 và ____24 thành 5. Các tệp theo dõi thường được lưu trong 6 hoặc 7, nhưng bạn có thể kiểm tra đường dẫn đầu ra bằng cách xem xét chỉ thị 8 trong 9.Chỉ cần chạy mã và tệp theo dõi - bao gồm cả việc sử dụng bộ nhớ - sẽ được tạo ngay cả khi bạn hết bộ nhớ sớm. Để xác định vấn đề, bắt đầu ở dưới cùng của tệp theo dõi và làm việc theo cách của bạn. Tìm Deltas (số có + hoặc -) với một số lượng lớn và hãy nhớ rằng chúng được hiển thị bằng byte. 1024 byte = 1 kilobyte. Sau khi gỡ lỗi gỡ lỗi, hãy đảm bảo đặt lại 3 thành register_shutdown_function() 1. Các tập tin theo dõi có thể trở nên rất lớn, rất nhanh và ăn không gian đĩa.Quản lý bộ nhớ 4 PHPĐây là một sàn trượt tuyệt vời về cách PHP đối phó với bộ nhớ trong nội bộ. 5 Thử tháchSử dụng tập lệnh sau và cố gắng xác định chính xác vấn đề ở đâu. Thậm chí tốt hơn, cài đặt XDebug và tạo tệp theo dõi.
Với tất cả các mẹo này trong tâm trí, bạn sẽ có thể khắc phục bất kỳ lỗi cạn kiệt bộ nhớ nào. Nếu bạn vẫn đang gặp sự cố, tôi rất vui khi được nhảy vào một phiên AirPair và giúp đi đến gốc rễ của vấn đề để bạn có thể tập trung vào những gì quan trọng. Làm cách nào để khắc phục kích thước bộ nhớ cạn kiệt?Resolution.. Đăng nhập vào cPanel. .... Trong phần Phần mềm/Dịch vụ của Màn hình chính CPanel, bấm chọn Phiên bản PHP:. Nhấp vào Chuyển sang Cài đặt PHP .. Xác định vị trí hàng Memory_Limit, chọn giá trị mới cho giới hạn bộ nhớ tập lệnh, sau đó nhấp vào Áp dụng .. Nhấp vào Lưu để lưu cài đặt .. Làm cách nào để sửa lỗi bộ nhớ trong PHP?Tạo tệp phpinfo.php trong thư mục gốc và kiểm tra các giới hạn bộ nhớ hiện tại. Theo giới hạn bộ nhớ mặc định là 8m, nhưng trong trường hợp này, bạn phải tăng giới hạn bộ nhớ lên 12m, 16m, 24m, v.v. với dòng này. Điều này sẽ tăng giới hạn bộ nhớ của bạn và giải quyết lỗi này. php file under root directory and check for current memory limits. By default memory limit is 8M, but in this case you have to increase the memory limits to 12M, 16M, 24M and so on with this line. This will increase your memory limit and solve this error.
Làm cách nào để khắc phục kích thước bộ nhớ được phép 134217728 byte cạn kiệt?Cách chính xác là chỉnh sửa tệp php.ini của bạn.edit memory_limit theo giá trị mong muốn của bạn.Từ câu hỏi của bạn, 128m (là giới hạn mặc định) đã bị vượt quá, do đó, có một cái gì đó sai nghiêm trọng với mã của bạn vì nó không nên mất nhiều như vậy.edit your php. ini file. Edit memory_limit to your desire value. As from your question, 128M (which is the default limit) has been exceeded, so there is something seriously wrong with your code as it should not take that much.
Làm cách nào để sửa lỗi cho phép Fatal Fatal cho phép Kích thước bộ nhớ 8388608 đã cạn kiệt?23 bình luận.. Thêm ini_set (Memory Memory_Limit ,, 16m,);Để bắt đầu tệp PHP riêng lẻ của bạn gây ra lỗi.Ví dụ, nếu chỉ mục.PHP đang gây ra lỗi, thêm vào đầu chỉ mục..... Thay đổi bộ nhớ_limit = dòng trong PHP của bạn.Tệp INI..... Thêm dòng memory_limit = dòng vào của bạn.Tệp HTAccess (hoặc tạo A .. |