Hướng dẫn php artisan memory limit - giới hạn bộ nhớ nghệ nhân php

Tôi đang gặp lỗi bộ nhớ trong công việc php cron:

Nội dung chính

  • Php memory_limit là cài đặt trên mỗi kịch bản
  • Cách tăng php & nbsp; memory_limitmemory_limit
  • Tags: bộ nhớ, hiệu suất, PHP
  • Làm cách nào để tăng giới hạn bộ nhớ PHP của tôi?
  • Giới hạn bộ nhớ PHP là gì?
  • Làm cách nào để tăng giới hạn bộ nhớ máy chủ?
  • Làm cách nào để tăng giới hạn bộ nhớ của nhà soạn nhạc?

$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
3

Các phần áp dụng của crontab là:

$ sudo crontab -u www-data -l
MAILTO=root
# m h  dom mon dow   command
*/15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix

Tôi đang chạy trên Debian Squeeze, được cập nhật đầy đủ.

Giải pháp rõ ràng là CLI có giới hạn bộ nhớ thấp (là 64MB). Tuy nhiên, /etc/php5/cli/php.ini nói rằng điều đó là không giới hạn.

$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1

Tôi đọc ở đâu đó rằng nó có thể khác nhau đối với những người dùng khác nhau và vì quá trình này đang chạy dưới dạng www-data, tôi đã chạy:

$ sudo -u www-data -s
$ php -i | grep memory_limit
memory_limit => -1 => -1
suhosin.memory_limit => 0 => 0

Ngay cả Apache/php.ini cũng có giới hạn cao hơn lỗi yêu cầu:

$ sudo cat /etc/php5/apache2/php.ini | grep memory_limit
memory_limit = 128M

Tôi còn thiếu gì? Giới hạn bộ nhớ này ở đâu?

Vì PHP-CLI có một tệp INI khác nhau, điều này thường dẫn đến cấu hình sai.PHP-CLI has a different ini file, this often leads to misconfiguration.PHP-CLI has a different ini file, this often leads to misconfiguration.

Những gì chúng ta có thể làm, cho một tập lệnh shebang «unix shebang», là đặt các phím ini trên đường bay trực tiếp trên dòng shebang, như vậy:PHP shell script, is to set ini keys on the fly directly on the shebang line, like so:PHP shell script, is to set ini keys on the fly directly on the shebang line, like so:

#!/usr/bin/php -d memory_limit=512M
<?php
phpinfo();
exit;

Sau đó để xem PHP đã hiểu, sử dụng

$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
4:
./myphpProg | grep memory

Đầu ra vỏ chính xác nên chứa:

memory_limit => 512M => 512M

$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
5
$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
6

Không cần sử dụng cơ chế Unix Shebang, chúng ta cũng có thể truyền một (hoặc nhiều) đối số

$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
7 trong dòng lệnh hoặc tập lệnh khởi động chuyên dụng:
$ sudo crontab -u www-data -l
MAILTO=root
# m h  dom mon dow   command
*/15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix
2

Php Memory_Limit là mỗi kịch bản, giống như giới hạn tốc độ của đường cao tốc là phương tiện. Ví dụ, mặc dù giới hạn bộ nhớ PHP có thể được đặt cao thành 1GB, điều đó không có nghĩa là các tập lệnh sẽ chồng chất để sử dụng 1GB đó. Hãy cùng xem nhanh về việc hiểu cài đặt PHP từ bộ nhớ_limit.understanding PHP’s memory_limit setting.understanding PHP’s memory_limit setting.

Php memory_limit là cài đặt trên mỗi kịch bản

Các tài liệu của PHP.NET, đặt nó theo cách này:

$ sudo crontab -u www-data -l
MAILTO=root
# m h  dom mon dow   command
*/15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix
3

Nguồn: http://php.net/manual/en/ini.core.php#ini.memory-limit

Không giống như nói, MySQL từ KEY_BUFFER_SIZE hoặc Innodb_Buffer_Pool Cài đặt, cài đặt php memory_limit không phải là & nbsp; một không gian lưu trữ trong đó nhiều tập lệnh PHP từ hoặc phát triển bên trong. Thay vào đó, nó có giới hạn A & NBSP; mỗi kịch bản. Php Memory_Limit là lượng bộ nhớ máy chủ tối đa A & NBSP; Single & NBSP; Php script được phép tiêu thụ. Khi bị chặn, đầu ra lỗi kết quả trông giống như thế này:not a storage space where multiple PHP scripts pool from or grow within. Rather it’s a per-script limit. PHP memory_limit is the maximum amount of server memory a single PHP script is allowed to consume. When blocked, the resulting error output looks something like this:not a storage space where multiple PHP scripts pool from or grow within. Rather it’s a per-script limit. PHP memory_limit is the maximum amount of server memory a single PHP script is allowed to consume. When blocked, the resulting error output looks something like this:

$ sudo crontab -u www-data -l
MAILTO=root
# m h  dom mon dow   command
*/15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix
4

Hoặc như thế này:

$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
0

Vì vậy, ví dụ, nếu hai hoặc nhiều tập lệnh được yêu cầu đồng thời, mỗi tập lệnh hoàn toàn độc lập với chữ cái kia. Họ không chia sẻ cài đặt Memory_Limit. Hãy nhớ rằng, PHP không được thiết kế và không hỗ trợ đa luồng. Do đó, nếu năm (5) tập lệnh PHP đồng thời sử dụng 100MB mỗi tập lệnh, thì tổng số 500MB sử dụng bộ nhớ PHP và giới hạn bộ nhớ PHP là 128M sẽ bị ảnh hưởng.

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

Câu lệnh bao gồm tất cả các văn bản/mã/đánh dấu tồn tại trong tệp được chỉ định và sao chép nó vào tệp sử dụng câu lệnh bao gồm. Hàm yêu cầu () giống hệt nhau để bao gồm (), ngoại trừ việc nó xử lý các lỗi khác nhau. Nếu xảy ra lỗi, hàm bao gồm () sẽ tạo cảnh báo, nhưng tập lệnh sẽ tiếp tục thực thi. Yêu cầu () tạo ra một lỗi nghiêm trọng và tập lệnh sẽ dừng lại. - Trường học W3S.

Câu lệnh abor_once () giống hệt với yêu cầu () ngoại trừ PHP sẽ kiểm tra xem tệp đã được bao gồm và nếu vậy, không bao gồm (yêu cầu) một lần nữa. - Php.net

Hướng dẫn php artisan memory limit - giới hạn bộ nhớ nghệ nhân php


Php Memory_Limit là mỗi kịch bản, giống như giới hạn tốc độ của đường cao tốc là phương tiện.

Bây giờ liên quan đến ví dụ ban đầu được đề cập ngay từ đầu. Cài đặt thấp hơn 128m luôn tốt hơn vì nếu các tập lệnh PHP đang cố gắng sử dụng hơn 128m, các tập lệnh đó giờ đây sẽ trả về các lỗi giới hạn bộ nhớ. Trong vấn đề trên, đó không phải là trường hợp, vì vậy, bất kể cài đặt 128m hoặc 1G Memory_limit, nó chỉ phát huy tác dụng nếu có tập lệnh không hiệu quả.

May mắn thay, cài đặt PHP Memory_Limit sẽ chặn mã không hiệu quả, sau đó cảnh báo bạn để tối ưu hóa mã của mình. Cho đến khi được sửa, bạn có thể muốn tăng tạm thời Php Memory_Limit để tránh ứng dụng web của bạn trở nên không thể sử dụng do các lỗi ngoài bộ nhớ của PHP.

Nếu bạn không có bộ nhớ có sẵn trên máy chủ của mình, đôi khi bạn sẽ phải đối mặt với việc quyết định có nên tăng bộ nhớ php_limit để đáp ứng các yêu cầu của tập lệnh hay để tối ưu hóa mã của bạn hay không. Sẽ là tốt nhất nếu bạn luôn được tối ưu hóa là tùy chọn ưa thích khi có thể. Ngoài ra, bạn có thể tăng giới hạn bộ nhớ PHP cho các trang web cụ thể. Một phương pháp sẽ là đặt một tệp php.ini trong trang web Webroot. Bạn thậm chí có thể đặt giới hạn cho scriptName.php cụ thể. Ví dụ: sử dụng ini_set (‘memory_limit, thì 256MB,).

Cách tăng php & nbsp; memory_limitmemory_limit

Để tăng cài đặt giới hạn bộ nhớ PHP, hãy chỉnh sửa tệp php.ini của bạn. Tăng giá trị mặc định (Ví dụ: Lượng bộ nhớ tối đa Một tập lệnh có thể tiêu thụ = 128MB) của dòng giới hạn bộ nhớ PHP trong php.ini.memory limit line in php.ini.memory limit line in php.ini.

$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
1

Ngoài ra, bạn có thể chỉnh sửa tệp .htaccess của mình (không được khuyến nghị. Xem: Hiệu suất Apache: Tắt .htaccess)

$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
2

Nếu bạn không có quyền truy cập vào các tệp này hoặc thiếu kinh nghiệm để thực hiện thay đổi này, bạn có thể liên hệ với máy chủ web của mình và yêu cầu họ tăng giới hạn bộ nhớ PHP của bạn.

Xuất bản lần đầu: ngày 18 tháng 9 năm 2017. Cập nhật lần cuối: ngày 19 tháng 8 năm 2021 Last updated: August 19th 2021
Last updated: August 19th 2021

Tags: bộ nhớ, hiệu suất, PHP

Làm cách nào để tăng giới hạn bộ nhớ PHP của tôi?

Làm thế nào để thay đổi giới hạn bộ nhớ...

Xác định vị trí PHP.Tệp INI được sử dụng bởi máy chủ web của bạn.Bạn có thể nhấp vào liên kết "Thông tin thêm" trên phần PHP của Trạng thái Drupal.....

Chỉnh sửa tham số Memory_Limit trong PHP.Tệp INI (thường trong một phần gọi là giới hạn tài nguyên).....

Khởi động lại Apache ..

Giới hạn bộ nhớ PHP là gì?

Giới hạn bộ nhớ mặc định là 256m và điều này thường quá đủ cho hầu hết các nhu cầu.Nếu bạn cần tăng giới hạn này, bạn phải tạo tệp PHPRC.256M and this is usually more than sufficient for most needs. If you need to raise this limit, you must create a phprc file.256M and this is usually more than sufficient for most needs. If you need to raise this limit, you must create a phprc file.

Làm cách nào để tăng giới hạn bộ nhớ máy chủ?

Tệp INI trên máy chủ của bạn, vui lòng làm theo các bước này:...

Mở PHP.Tệp Ini ..

Tìm kiếm văn bản sau: Memory Memory_Limit.

Tăng giá trị này lên 64MB như được hiển thị dưới đây:.

Làm cách nào để tăng giới hạn bộ nhớ của nhà soạn nhạc?

Resolution...

Đăng nhập vào Plesk ..

Truy cập tên miền> example.com> Trình soạn thảo php> biến môi trường ..

Nhấp vào Chỉ định trong các biến môi trường ..

Thêm biến môi trường sau: Memory_Limit = 2048m.Lưu ý: Đặt bộ nhớ_limit thành -1 để làm cho nó không giới hạn ..